. Aplicatia Examstud. Examinare Online

CAPITOLUL I – Introducere

Internetul a devenit un accesoriu din ce în ce mai obișnuit și în România. Bineînțeles, nu putem compara calitatea serviciilor cu cele din țările occidentale, însă putem spune că ne îndreptăm încet, dar sigur în direcția potrivită.

Schimbările constante care au loc pe Internet conduc, de asemenea, la necesitatea unei schimbări a modului de învățare. In era informațională, subiectele și conținutul predat nu s-au schimbat prea mult până acum. Cu toate că au apărut de-a lungul anilor unele modificări în planurile de învățământ, lucrurile încă decurg foarte lent.

Cursurile, evaluarea asistate de calculator au fost introduse cu câțiva ani în urmă, punându-se deocamdată doar bazele învățării. Software-ul educațional este folosit actualmente numai pentru a se explica un subiect și apoi a se testa studentul. Acesta este un mod efectiv de învățare la distanță.

Învățarea și instruirea bazate pe Web (Web-based learning/training) oferă o nouă dimensiune în învățarea/instruirea digitală. Ca exemplu de sit educațional în România putem da TimSoft – www.timsofc.ro. O altă exemplificare, din multitudinea de situri disponibile, este English for Internet – www. study. com – util pentru cei care doresc să studieze limba engleză.

De altfel, marile companii oferă posibilități de instruire on-line și aici putem da drept exemplificări cursurile sau informațiile oferite de firmele Cisco, Sun sau Microsoft.

Un alt termen vehiculat în acest context este cel de educație într-o universitate virtuală (Virtual University Education), în lume funcționând cu succes câteva zeci de astfel de instituții, denumite universități deschise (e.g.: Online Leaming în SUA -www.OnlineLearning.net, UNED în Spania – www.uned.es sau Virtual OnhneUniversity-www.athena.edu).

În vederea implementării, se recurge de cele mai multe ori la software specializat – medii de dezvoltare a cursurilor electronice precum WebCT.

Aplicațiile de acest tip fac parte din E-Learning.

Întrucât lărgirea cadrului de aplicabilitate a informaticii, având la bază ca principal factor progresul tehnic, a dus la implicarea acesteia pe mai multe arii de activitate, una din acestea este învățământul și mai mult, activitatea de evaluare prin intermediul calculatorului.

Dezvoltarea științei și tehnicii pe plan internațional a însemnat adoptarea acestei metode de evaluare -evaluare online-, în țările occidentale, urmând ca în anii următori România să adopte acest sistem de evaluare.

Tema dezbătută în prezenta lucrare –“Examinare online” se adresează, cu precădere atât cadrelor didactice din învățământul universitar, dar și studenților evaluați, întrucât procesul evaluării presupune prin definiție, legătura didactică dintre profesor și student.

Evaluarea online presupune un nou mod de a testa cunoștiințele dobândite în cadrul unui semestru, de către studenții unei facultăți, dar nu într-un mod obișnuit, prin relația directă, față în față, ce definește, până în prezent la noi în țară, procesul evaluării. Prin noua metodă propusă, relația indirectă, prin intermediul calculatorului ia locul celei directe.

Folosirea acestei modalități de evaluare are atât atuuri, cât și inconveniente.

Dintre atuuri, cel mai plauzibil îl reprezintă economia timpului afectat în cazul evaluării de tipul față în față. Iar unul din cele mai plauzibile incoveniente il reprezintă subiectivismul, atât din partea cadrului didactic cât și din partea studentului.

CAPITOLUL II – Fundamente teoretice

2.1. Scurt istoric Php

PHP, acronim care provine din "PHP: Hypertext Preprocessor", este un limbaj de scripting utilizat pe scară largă, realizat și distribuit în sistem Open Source, care este special realizat pentru a dezvolta aplicații web, prin integrarea codului PHP în documente HTML. Sintaxa sa provine din C, Java și Perl și este ușor de învățat. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se pot realiza mult mai multe.

Pentru ultimele distribuții sau documentații php puteți apela la site-ul http://www.php.net. De asemenea exista si un manual php tradus parțial in romana la adresa http://www.php.net/docs.php de unde îl puteți extrage in mai multe formate (pdf,html,chm) sau vizualiza online.

Prima versiune de PHP s-a numit PHP/FI. Ea a fost creata de Rasmus Lerdorf in 1995. Inițial versiunea conținea o colecție simpla de scripturi Perl scrisa pentru considerente proprii si care se numea ‘Personal Home Page Tools’. Cu timpul Rasmus a dezvoltat acest pachet adăugând cat mai multe facilitați, cum ar fi comunicarea cu bazele de date, ceea ce ducea la dezvoltarea unor aplicații web dinamice, simple dar eficiente. Rasmus a hotărât sa facă publice sursele PHP/FI pentru ca fiecare sa beneficieze de avantajele lor si pentru a îmbunătăți codul. PHP/FI (Personal Home Page / Forms Interpreter) avea funcționalitatea codului PHP din ziua de azi. Avea variabile ca in Perl, interpretare de formulare HTML, cod HTML integrat in sintaxe. Însuși sintaxa era similara cu cea din Perl, insa mult mai limitata, simpla si intr-un fel inconsistenta.

In 1997 apare PHP/FI 2.0, si deja începe sa câștige in popularitate, un grup de câteva sute de utilizatori din întreaga lume deja se arătau interesați de acest proiect iar aproximativ 50.000 domenii aveau instalat PHP (ceea ce însemna 1% din totalul domeniilor de pe Internet la vremea aceea). Cu toate ca un grup restrâns de persoane participau la development, totuși munca principala era făcuta tot de un singur om (Rasmus Lerdorf).

PHP/FI 2.0 a fost lansat oficial in Noiembrie 1997, după o lunga perioada de releas-uri beta. La scurt timp își fac apariția si primele versiuni alpha de PHP 3.0.

PHP 3.0 este prima versiune care era asemănătoare cu versiunile din zilele noastre. A fost creat si dezvoltat de Andi Gutmans si Zeev Suraski in 1997 care au rescris complet codul după ce si-au dat seama ca PHP/FI 2.0 nu putea face fata unei aplicații eCommerce la care ei lucrau la un proiect pentru universitate. Unindu-si eforturile cei doi au hotărât sa participe la developmentul PHP si sa creeze PHP 3.0

Una dintre cele mai mari proprietăți ale PHP 3.0 era extensibilitatea. Acest lucru a atras foarte mulți developeri care au contribuit cu noi module (comunicarea cu majoritatea tipurilor de baze de date, protocoale, API-uri). Un alt element cheie in PHP 3.0 a fost suportul pentru sintaxa orientata pe obiect care era in acest fel mult mai consistenta si flexibila.

Noul limbaj a fost lansat sub un nume nou, care înlocuia ideea de aplicație cu uz personal din PHP/FI 2.0 si aducea una mai mare si disponibila tuturor, la o scara mai mare: PHP: Hypertext Preprocessor.

La sfârșitul anului 1998, PHP se dezvoltase foarte mult, deja existau rapoarte care estimau zeci de mii de utilizatori si sute de mii de site-uri web care rulau PHP. In acest moment PHP constituia 10% din potențialul web al Internetului la vremea aceea.

PHP 3.0 a fost lansat pe piață oficial in Iunie 1998 după ce petrecuse 9 luni de testing public. În iarna lui 1998 la foarte scurt timp după PHP 3.0 a fost lansa, Andi Gutmans si Zeev Suraski au început sa rescrie codul PHP. Scopurile principale acum erau de a îmbunătăți performanța aplicațiilor mai complexe si de a extinde modularitatea codului PHP.

Noul engine a fost numit ‘Zend Engine’ (compus din numele Zeev si Andi) iar acesta putea face fata aplicațiilor complexe cu succes. Acesta a fost prezentat pentru prima oara la mijlocul anului 1999. PHP 4.0 se baza pe acest engine care împreuna cu mai multe addonuri și îmbunătățiri a fost lansat in Mai 2000 la aproape 2 ani de la predecesorul sau PHP 3.0.

Noua versiune includea suport pentru majoritatea platformelor si serverelor web, sesiuni http, output buffering, moduri mai securizate de a manipula input-urile userilor, etc. PHP 4 este in prezent cea mai stabila versiune de PHP. Deja s-a început developmentul la PHP 5.0 din care au fost făcute publice câteva versiuni alpha.

In prezent PHP este folosit de sute de mii de programatori web si câteva milioane de site-uri care îl au instalat (estimări de 20% din domeniile de pe Internet existente in prezent). PHP 5.0 va include noua versiune a noului engine Zend Engine 2.0.

2.2. Ce este PHP? 

PHP este un limbaj de tip script proiectat special pentru Web, care rulează pe server. Intre bucățile de cod HTML al unei pagini web putem introduce cod PHP care va fi executat de fiecare data când acea pagina este vizitata. Codul PHP este interpretat de serverul web si este generat cod HTML sau alt rezultat care va fi văzut de vizitatorul paginii. Limbajul PHP a fost conceput in anul 1994 și inițial a fost rezultatul muncii lui Rasmus Lerdorf. A fost adoptat si de alți oameni talentați si a trecut prin trei mari îmbunatatiri pana a ajuns la produsul pe care îl folosim astăzi. In ianuarie 2001 limbajul PHP era folosit pe aproape cinci milioane de domenii din lume, iar acest număr a crescut rapid. In momentul editării acestui articol numărul domeniilor care folosesc PHP este de aproape 10.600.000. Pentru a vedea numărul exact de domenii care folosesc PHP vizitați adresa http://www.php.net/usage.php . 

            PHP este un produs Open Source. Aveți acces la codul sursa. Puteți sa îl folosiți, sa-l modificați, si apoi sa-l redistribuiți gratis. Inițial, PHP însemna Personal Home Page, dar acest lucru a fost modificat pentru a fi in concordanta cu convenția denumirii recursive GNU (GNU = GNU’s Not UNIX), iar acum înseamnă PHP Hypertext Preprocessor. Versiunea actuala de PHP este 4. In aceasta versiune au fost aduse importante imbunătățiri limbajului. Pagina oficiala PHP este http://www.php.net . 

2.3. Scurt istoric MySql

Bazele sistemului MySQL au fost puse în 1979, o dată cu instrumentul pentru baze de date UNIREG, creat de Michael "Monty" Widenius pentru compania suedeză TcX. în 1994, TcX a început să caute un server SQL pentru a-1 utiliza la dezvoltarea aplicațiilor

Compania a testat unele servere comerciale, dar toate s-au dovedit a fi prea lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. în consecință, Monty a început să programeze un server nou. Interfața de programare era proiectată în mod explicit pentru a fi similară celei folosite de mSQL, deoarece pentru mSQL erau disponibile numeroase instrumente gratuite, iar prin utilizarea unei interfețe similare aceleași instrumente puteau fi folosite pentru MySQL, cu un efort de portare minim.

în 1995, David Axmark de la Detron HB a început să facă presiuni pentru ca TcX să lanseze MySQL pe Internet. De asemenea, David lucra la documentație și la a determina MySQL să construiască folosind utilitarul GNU configure. MySQL 3.11.1 a fost dat lumii întregi în 1996, sub forma de distribuție binară pentru Linux si Solaris, în prezent, MySQL funcționează pe mult mai multe platforme si este disponibil atât în formă binară, cât și sursă.

MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții. Totuși, MySQL se bucură de o amplă popularitate în comunitatea Open Source, deoarece termenii de licență nu sunt foarte restrictivi, (în esență, MySQL este în general gratuit, dacă nu doriți să obțineți profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia.)

Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. Da, rulează pe calculatoare personale (într-adevăr, o bună parte din programarea cu MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil si rulează pe sisteme de operare comerciale (precum Solaris, Irix si Windows) și pe echipamente care merg până la servere de întreprindere, în plus, performanțele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care doriți să îl comparați și poate manipula baze de date de mari dimensiuni, cu milioane de înregistrări.

2.4. Ce este MySQL? 

MySQL este un sistem foarte rapid sQL? 

MySQL este un sistem foarte rapid si robust de management al bazelor de baze. Un sistem de baze de date permite stocarea, căutarea, sortarea eficienta a datelor. Serverul de baze de date MySQL controlează accesul la datele stocate pentru a asigura faptul ca mai mulți utilizatori pot lucra concurent cu aceste date, pentru a oferi acces rapid la date si pentru a asigura doar accesul  persoanelor autorizate. Deci, MySQL este un server multiutilizator si cu mai multe fire de execuție. MySQL folosește limbajul SQL(Structured Query Language), limbajul standard de interogare a bazelor de date. A fost disponibil public din anul 1996, dar dezvoltarea sa a început in 1979. A câștigat premiul cititorilor revistei Linux Journal. MySQL este disponibil sub licenta Open Source, dar si sub licenta comerciala daca este necesar. Pagina oficial este www.mysql.com .

2.5. Despre Hypertext și World Wide Web

Prin hipertext se întelege un document (evident în sensul utilizat în informatica: fisier creat printr-un editor, procesor etc) care contine, pe lânga text (continutul clasic al unui document), graficã, imagini, animatie, înregistrãri audio, legãturi cãtre alte documente. Un hipertext poate fi gândit într-un spatiu cu mai multe dimensiuni, fiecare axã reprezentând un alt mijloc de comunicare: text, audio, video etc.

Conceptul de hypertext a apãrut în iulie 1945 când Vannevar Bush a imaginat, în articolul As we may think, scris pentru Atlantic Monthly, o masina care putea opera cu texte si grafice on-line.

În 1960, Th.H. Nelson (Computer Lib/Dream Machines) a unit termenul de hipertext cu cel de hipermedia, lucrarea lui influentând introducerea Web. În anii 1970, Nelson a initiat proiectul XANADU, orientat cãtre biblioteci digitale si sisteme hipertext, proiect nefinalizat însã.

Dupã anii 1980, aparitia sistemelor de help în produsele Apple si Microsoft, sisteme care permit utilizatorilor sã navigheze prin selectãri de butoane sau termeni, au fãcut ca notiunea de hipertext sã devinã una obisnuitã, desi hipertextele respective nu aveau o complexitate foarte mare.

Hipertextul permite pãrãsirea modului traditional de citire a unui document: linie dupã linie, paginã dupã paginã etc. Legãturile activate produc o desfãsurare a documentului dupã nevoile utilizatorului plus posibilitatea de pãstrare a atentiei cititorului prin utilizarea legãturilor grafice, audio etc.

World Wide Web, sau WWW, sau Web a apãrut la sfârsitul anilor '80 când cercetãtorii de la CERN, Laboratorul European pentru fizica particulelor, au dezvoltat o retea pentru a avea acces mai usor la documentele produse de diversele laboratoare. În 1990, ei au introdus un browser doar pentru texte si au dezvoltat HTML. În 1991 au implementat Web la CERN.

În 1992 cercetãtorii de la CERN au introdus Web în comunitatea Internet si aceasta a început revolutia (S.E. Eddy – HTML in plain English).

Ceea ce diferentiazã WWW de celealte componente ale Internet-ului este tocmai hipertextul, care si-a gãsit în Web calea idealã de exprimare. Toate documentele accesibile în Web sunt legate între ele indiferent de serverul pe care sunt memorate si indiferent de locul geografic unde sunt.

Trecerea de la un document la altul, de la un subiect la altul, de la un loc la altul etc produce o impresie puternicã asupra utilizatorului, îi dã acestuia certitudinea cã totul este potrivit intereselor lui, potrivit ritmului propriu de întelegere.

2.6. Scurt istoric Html

HTML definește un format flexibil, portabil și facil al documentelor Internet, o direcție de dezvoltare a limbajului fiind extensia lui la hipermedia

Ca descendent al SGML-ului, limbajul HTML are o istorie care debutează cu publicarea în 1986 de către Organizația internațională pentru standardizare (ISO) a unui articol intitulat "Information Processing – Text and Office Systems – Standard Generalized Markup Language (SGML)". După trei ani, Tim Berners-Lee de la CERN inaintează o propunere – proiect ce a circulat sub numele de "HyperText and CERN" – de sistem de documente hipertext, denumit în octombrie 1990 World-Wide Web.

Team Berners-Lee identifică un număr de considerente practice pentru sistemul propus care trebuia să ofere:

accesul la distanța într-o rețea, acceptându-se diverse tipuri de conexiuni;

accesul la o multitudine de surse de informații stocate intr-o varietate de forme (text, grafica, sunet etc.) cu ajutorul unor tipuri diferite de sisteme de operare situate pe diferite platforme hardware;

capabilități de extindere și dezvoltare în ceea ce privește aria de acoperire prin creșterea numărului de legături, fară existenta unui control central.

Tim Berners-Lee scrie de asemeni prima aplicație Web, un pachet de server Web rulând pe calculatoare NeXT. În noiembrie 1990, Nicula Pellow începe să conceapă un navigator (browser) text care la sfârșitul aceluiași an era disponibil în cadrul CERN.

În mai 1991, CERN prezintă WWW la seminarul anual și browserele în mod linie pentru platforme ca VAX, RS6000 și SUN sunt disponibile pe grupurile de știri alt.hypertext, comp.sys.net, comp.text.sgml și comp.mail.multi-media (august 1991).

Dan Connolly se alătură proiectului Web, iar experiența sa în utilitare de documentare on-line și sisteme formale îl ajută sa dezvolte specificația pentru HTML. Pe data de 15 ianuarie 1992 apare pentru prima dată, disponibil prin FTP anonim, un browser text conceput de CERN, interpretând noul limbaj HTML, prezentat și la AIHEP'92 – La Londe. Proiectului Web i se alătură Jean-Francois Groff și Carl Barker.

În 1993, primul navigator grafic, numit Mosaic, rulând sub X Window este proiectat de Marc Andreesen și făcut public de NCSA (luna februarie). Mosaic utilizează primul standardul HTML, bazat pe tag-uri, inspirat după SGML. În aprilie 1993, după aproape un an și jumătate de la introducerea Web-ului, existau deja 60 de servere WWW.

Urmează ulterior prezentarea standardului HTML 2.0 (IETF RFC 1866) care include abilități de afișare mai precisă a imaginilor, utilizarea de formulare, tabele, tipuri de legături etc. HTML 2.0 permite dezvoltarea masivă a Web-ului și toate browserele WWW moderne îl suportă fără restricții. În fapt, standardul HTML 2.0 doar pune în ordine anumite facilități practice apărute începând cu anul 1994. Netscape extinde o parte din specificațiile HTML 2.0 în 1996 adăugând o serie de tag-uri utile în versiunea foarte populară Netscape Navigator 2.0.

HTML+ se dorea a fi o încercare de a extinde HTML-ul, prima dată publicată de Dave Raggett în 1993 și prezentată la prima conferința Web în 1994.

O extensie a HTML+ a fost HTML 3.0 care n-a fost niciodată standardizată. Ea a fost propusa de tânărul pe atunci Consortiu W3, format în 1994 de către CERN și MIT cu scopul de a alcătui un standard viabil al limbajului HTML și de a ghida conceperea de pagini Web. Acest consorțiu este cel care propune, certifica și urmărește întreaga dezvoltare a spațiului WWW.

În luna iulie 1996, consorțiul Web anunță oficial standardul HTML 3.2 adăugând specificații pentru tabele, imagini, applet-uri, perfect compatibil cu HTML 2.0. În ianuarie 1997, standardul a fost aprobat și toate navigatoarele îl suportă.

Proiectanții de navigatoare (ca Netscape și, mai nou, Microsoft) au adăugat diferite facilități care nu apar definite de nici un standard HTML. De exemplu, Netscape Navigator 3.0 oferea la data lansării posibilități de adăugare de elemente multimedia direct în paginile Web, fundaluri reprezentate de imagini, cadre (frames) etc. care nu apăruseră încă în specificațiile HTML, plus suport pentru script-uri Java interpretate direct de către client.

Următoarea versiune a HTML-ului dezvoltată de consorțiul W3, denumită Cougar, este standardul HTML 4.0, apărut relativ recent, în anul 1997, care aduce suport pentru accesibilitatea paginilor Web din partea persoanelor cu handicap, foi de stiluri interne, suport lingvistic și pentru formule matematice, evenimente etc. După cum stipulează inventatorul Web-ului și directorul W3C, Tim Berners-Lee:

"Cu HTML 4.0, orice aplicație Web va fi independentă de navigator."

HTML 4.0 este disponibil în trei variante:

HTML 4.0 Strict

HTML 4.0 Transitional

HTML 4.0 Frameset

Versiunile actuale ale celor mai cunoscute navigatoare (Netscape Communicator 4, 6, Internet Explorer 5 și Opera 4) suportă standardul HTML 4.

Pentru a asigura fiabilitatea și corectitudinea comunicațiilor pe WWW, Consorțiul Web a introdus HTML Validation Service (http://validator.w3.org/) care verifică dacă un anumit document se conformează standardului HTML 4.0. Tim Berners-Lee declară că HTML 4.0 n-a fost conceput pentru navigatoare, ci pentru aplicații viitoare și produse Web.

Ultima direcție de standardizare a Consortiului WWW este cea a rescrierii HTML-ului în termenii meta-limbajului extensibil XML, pentru a crește flexibilitatea și a oferi proiectanților de aplicații Web o mai mare adaptabilitate. Astfel, HTML 4.0 este urmat de XHTML 1.0, standardizat relativ recent, în luna ianuarie 2000.

2.7. Scurta prezentare a limbajului Php și MySql

Introducere

Pentru multă lume, principala rațiune de a învăța un limbaj precum PHP ar fi interacțiunea pe care o oferă cu bazele de date. În continuare voi explica cum se folosește PHP și MySQL, pentru a memora informații pe Web și cum includem toate astea pe site-ul Web.

De ce îmi trebuie o Bază de Date?

Este, de fapt, surprinzător cât de utilă poate fi o bază de date, mai ales atunci când poate fi folosită într-un site Web. Sunt foarte multe lucruri care se pot face într-un astfel de caz, de la afișarea unor simple liste și până la producerea integrală a paginilor Web dintr-o bază de date.

De ce e nevoie?

Sunt necesare trei componente pentru a putea rula scripturi PHP care să acceseze baze de date cu MySQL.

În primul rând, este nevoie de un server Web. Acesta poate fi sau pe calculatorul personal sau pe o 'gazdă' Web. Oricare pachet – oricare tip de server Web este acceptat și va lucra cu PHP și MySQL, dar cel mai recomandat este Apache, care e public și gratis.

PHP trebuie să fie instalat pe server. Dacă nu este deja instalat, puteți să o faceți sau să apelați la administratorul serverului Web, în acest sens. Pachetul de instalare poate fi descărcat – preluat de la http://PHP.net și este deasemeni public – gratuit. Dacă nu sunteți sigur dacă este sau nu instalat, o să vedeți mai jos cum vă puteți lămuri.

În fine, aveți nevoie de MySQL. Acesta este de fapt pachetul de programe pentru gestiunea bazelor de date. Puteți folosi deasemeni multe alte sisteme de baze de date (SQL, Oracle etc.) dar aici discutăm despre PHP/MySQL, deci avem nevoie de MySQL (cu toate că se folosesc comenzi care țin de limbajul SQL ți 'merg' la oricare din sistemele de baze de date SQL). Și pachetul MySQL este public – gratuit, putând fi preluat din pagina oficială a firmei MySQL. Dar și în cazul MySQL trebuie să verificăm mai întâi dacă nu cumva este deja instalat.

Cum aflăm dacă PHP și MySQL sunt instalate

Există un test simplu, atât pentru PHP cât și pentru MySQL:

Lansați – deschideți un editor de texte și scrieți următoarele:
<?
phpinfo();
?>
salvând fișierul cu un nume precum phpinfo.php

Apoi încărcați acest fișier în spațiul web, pe server, apelându-l, după aceea, din navigator. Dacă PHP-ul este deja instalat veți căpăta o pagină plină cu toate detaliile instalării respective. Parcurgeți atunci aceste informații. Dacă găsiți o secțiune despre MySQL atunci înseamnă că MySQL este și el deja instalat.

Gestiunea Bazelor de date

Chiar dacă tot ce ține de administrarea bazelor de date poate fi realizat prin scripturi PHP, instalarea pe server a pachetului PHPMyAdmin poate aduce un plus de confort. Este un excelent set de scripturi care asigură o interfață administrativă pentru bazele de date MySQL. Și mai este și public-gratuit.

Cu el puteți adăuga, elimina, edita, salva și vizualiza bazele de date, fiind deosebit de util pentru depanare.

Construcția Bazei de Date

Mai înainte de a porni construcția unor script-uri pentru baze de date, ar trebui să avem o bază de date în care să plasăm informații și din care să citim. Ca un exemplu, vom crea o bază de date de tip carte de adrese de contact.

Bazele de date MySQL au un sistem de inițializare standard (un setup). Este vorba de o bază de date, compusă din tabele, oarecum separate, conținând diferite câmpuri, etc. chiar dacă sunt parte dintr-o bază de date. Fiecare tabelă conține înregistrări care sunt făcute din câmpuri.

Conectarea la o Bază de Date

Procesul de instalare a unei baze de date MySQL diferă de la o platformă la alta. În esență este vorba peste tot de un nume al bazei de date, un nume de utilizator (cont) și o parolă. Aceste informații sunt cerute pentru conectarea la baza de date.

Dacă aveți pachetul PHPMyAdmin (sau un program similar) instalat, atunci puteți să intrați acolo și să vă conectați introducând contul (numele de utilizator) și parola. Dacă nu aveți așa ceva, atunci trebuie să faceți întreaga administrare a bazelor de date folosind script-uri PHP (și o puteți face).

Crearea unei Tabele

Mai înainte de orice altceva cu baza de date, trebuie să vă creați o tabelă. O tabelă este o secțiune a bazei de date pentru memorarea unor informații structurate (legate). Intr-o tabelă vom defini diferite câmpuri care vor fi folosite în acea tabelă. Din cauza acestei construcții, aproape toate centrele cu baze de date trebuie să fie satisfăcute folosind doar o bază de date.

Crearea unei tabele în PHPMyAdmin este simplă, scrieți numele, selectați numărul de câmpuri și &Quot;apăsați" butonul (click). Ajungeți atunci la un ecran setup în care trebuie să creați câmpurile pentru baza de date. Dacă folosiți un script PHP pentru a crea propria bază de date, iar completa creere și inițializarea vor fi făcute îtr-o singură comandă.

Câmpuri

Există o largă varietate de câmpuri și de atribute disponibile în MySQL și vom discuta doar câteva din ele:

Acestea sunt doar câteva dintre câmpurile disponibile. O căutare pe Internet ne poate furniza lista cu toate tipurile de câmpuri permise.

Crearea unei Tabele cu PHP

Să creem o tabelă din PHP este ceva mai dificil decât cu MySQL. Avem de parcurs următorii pași:

CREATE TABLE nume_tabel {

Fields

}

Câmpurile sunt definite după cum urmează: fieldname type(length) extra info, ultimul câmp introdus nu poate include nici o virgulă.
O să dăm îndată un exemplu complet privind aceste definiri.

Baza de date cu adrese de contact

Baza de date de contact va conține toate informațiile de contact ale cunoscuților introduși în tabel. Iar informațiile vor putea fi editate și consulate în internet. Următoarele câmpuri vor fi folosite în baza de date:

Poate vă mirați că am folosit un tip de câmp VARCHAR pentru coloana mumăr_telefon/fax, chiar dacă acestea sunt formate din cifre. Chiar dacă am putea folosi tipul INT, este preferabil să folosim VARCHAR pentru că astfel vor fi permise spații și cratime, precum și porțiuni de text, la fel ca numerele scrise ca text (exemplu 1800-COMPANY) și cum nu vom iniția apeluri telefonice de pe Web, totul e în ordine.

Există încă ceva de care trebuie să avem grije în această bază de date. Câmpul id va fi pus ca PRIMARY, INDEX, UNIQUE și inițializat ca auto_increment (poziție ce apare în Extra în PHPMyAdmin). Rațiunea pentru asta este că acesta va fi câmpul identificator (primar sau index) și deci trebuie să fie unic. Definirea sa ca auto increment înseamnă că la adăugarea fiecărei înregistrări, câtă vreme nu specificăm acolo un id, acesta va primi ca valoare următorul număr.

Dacă folosim PHPMyAdmin sau un program de management, putem crea o tabelă numită contacte.

Crearea Tabelei în PHP

Pentru a crea această tabelă vom folosi următoarea secvență de comenzi PHP.

<?

$user="username";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Baza de date nu poate fi selectata");
$query="CREATE TABLE contacts (id int(6) NOT NULL auto_increment,nume varchar(15) NOT NULL,prenume varchar(15) NOT NULL,telefon varchar(20) NOT NULL,mobil varchar(20) NOT NULL,fax varchar(20) NOT NULL,email varchar(30) NOT NULL,web varchar(30) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2(id))";

mysql_query($query);

mysql_close();

?>

Introduceți numele bazei de date, contul MySQL și parola MySQL în pozițiile corespunzătoare din primele 3 linii de mai sus.

Conectarea la o bază de date

Primul lucru care trebuie făcut, mai înainte de a putea face ceva, este conectare la baza de date MySQL. Acesta este un pas foarte important, pentru că, dacă nu suntem conectați, comenzile către baza de date vor eșua.

Practic, pentru a folosi o bază de date trebuie să precizăm numele de utilizator (username), parola (password) și numele bazei de date :
$username="nume_utilizator";
$password="parola";
$database="numele_bazei_de_date";

Desigur, aici s-ar putea discuta dacă nu-i riscant să păstrăm parola într-un fișier. Nu trebuie să vă alarmați, însă, deoarece sursa PHP este prelucrată de server înainte de a fi trimisă navigatorului, astfel încacirc;t este imposibil pentru orice utilizator să vadă scriptul.

Mai apoi, avem nevoie de o comandă care să lanseze conexiunea la baza de date:

mysql_connect(localhost,$username,$password);

Această linie spune PHP-ului să se conecteze la serverul de baze de date MySQL la 'localhost' (localhost se numește serverul pe care rulează PHP-ul. In afara cazului în care gazda Web indică altceva, vom folosi localhost) folosind numele de cont memorat în $username și parola din $password.

Mai înainte de a discuta cum lucrăm cu baza de date, vom vedea încă o comandă:

mysql_close();

Aceasta este o comandă foarte importantă care închide conexiunea cu serverul de baze de date. Scriptul va rula încă, dacă nu includem această comandă, iar prea multe conexiuni MySQL deschise pot cauza probleme serverului web. Este un obicei bun să includem comanda de închidere de mai sus după ce am introdus toate comenzile către baza de date, pentru a menține platforma în bună stare.

Selectarea bazei de date

După ce ne-am conectat la severul de baze de date, trebie să selectăm baza de date pe care vrem s-o folosim. Trebuie să fie o bază de date la care avem acces, cu respectivul nume de utilizator. Se folosește următoarea comandă:

@mysql_select_db($database) or die( "Baza de date nu poate fi selectata");

Aceasta spune PHP-ului să selecteze baza de date specificată în variabila $database (pe care am definit-o mai înainte). Dacă conexiunea nu se poate realiza procesul (execuția script-ului) se oprește afișând textul: Baza de date nu poate fi selectata

Această parte suplimentară 'or die' este bună pentru ieșire, chiar dacă nu asigură decât un minim control al erorii.

Execuția comenzilor

După conectarea la server și selecția bazei de date dorite, putem începe execuția comenzilor pe server.

Există două moduri de a executa o comandă. Prima revine pur și simplu la introducerea comenzii în PHP. Asta merge atunci când nu apar rezultate ca urmare a execuției comenzii.

Cea de a doua variantă este să definim comanda ca o variabilă. Asta va atribui variabilei rezultatele operației.

Voi folosi prima variantă, deoarece nu aștept răspuns de la baze de date. Comanda va arăta cam așa:

mysql_query($query);

Folosirea acestei forme a comenzii este utilă pentru că repetăm pur și simplu aceiași comandă iarăși și iarăși fără a fi nevoie să memorăm altele. Tot ce avem de făcut este să schimbăm variabila.

Introducerea datelor

Acum ne vom întoarce la baza de date cu adrese de contact, pe care am creat-o în lecția anterioară. Pentru a introduce primele informații în baza de date:

Nume: Ionescu

Prenume: Gheorghe

Telefon: 021 3456789

Mobil: 0724 334455

Fax: 0264 567891

E-mail: [anonimizat]

Web: http://www.cinestie.inext.ro

Toate acestea vor fi introduse cu o singură comandă:
$query = "INSERT INTO contacts VALUES ('','Ionescu','Gheorghe','021 3456789','0724334455','0264567891','[anonimizat]','http://www.cinestie.inext.ro')";

Pare puțin cam confuz la prima vedere. Să lămurim puțin lucrurile.
Ma întâi, apare variabila $query căreia îi atribuim o comandă (vezi paragraful precedent). Următoarea parte, adică:

INSERT INTO contacts VALUES

este destul de ușor de înțeles. Ea spune PHP-ului să insereze în tabel numită contacts valorile care urmează (scrise între paranteze).

Acolo, între paranteze, avem toate câmpurile de adăugat. Apar toate câmpurile în ordine și sunt inserate informațiile dintre ghilimele. Spre exemplu:

Ionescu
va fi inserat în al 2-lea câmp, care, în această tabelă este câmpul 'nume' .
Poate ați reținut că nu am inserat nimic în primul câmp din baza de date (id). Asta din cauză că acest câmp va fi un câmp index, elementul unic de identificare. Fiecare înregistrare din baza de date va avea un unic ID. Din această cauză, când încărcăm baza de date, vom pune ID pe 'Auto Increment'. Asta înseamnă că, ne-atribuindu-i nici o valoare, el va lua la fiecare înregistrare următoarea valoare din șir. Iar prima înregistrare va avea valoarea ID=1 .

Introducerea datelor dintr-o pagină HTML

Introducerea datelor din paginile HTML este aproape identică cu inserarea lor din script-uri PHP. Avantajul constă, însă, în faptul că nu apare nevoia schimbării script-ului pentru fiecare câmp de introdus. In plus, putem permite "vizitatorilor" să introducă direct datele lor.

Iată mai jos cum arată o pagină HTML cu celule text pentru introducerea detaliilor corespunzătoare:

<form action="insert.php" method="post">
Nume Familie: <input type="text" name="nume"><br>
Prenume: <input type="text" name="prenume"><br>
Telefon: <input type="text" name="telefon"><br>
Mobil: <input type="text" name="mobil"><br>
Fax: <input type="text" name="fax"><br>
E-mail: <input type="text" name="email"><br>
Web: <input type="text" name="web"><br>
<input type="Submit">
</form>

Această pagină poate fi, desigur, formatată și pot apare diferite schimbări – variante. Este doar un formular de pornire, ilustrativ.
<?
$username="username";
$password="password";
$database="baza_mea_de_date";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Baza de date nu poate fi selectata");
$query = "INSERT INTO contacts VALUES ('','$nume','$prenume','$telefon','$mobil','$fax','$email','$web')";
mysql_query($query);
mysql_close();
?>

Acest script trebuie salvat ca fișier cu numele insert.php, astfel ca să poată fi apelat de formularul HTML. Treaba va merge întrucât, în loc ca datele să fie introduse local, ele se introduc în formular și sunt memorate în variabilele care apar precizate acolo și care sunt transmise apoi PHP-ului.

Scoaterea Datelor

Acum avem în baza de date cel puțin o înregistrare, dacă nu mai multe. Se pune problema cum vizualizăm, cum scoatem aceste date folosind PHP.

Prima comandă la care vom apela este comanda SELECT din SQL, folosită într-o cerere MySQL în forma:

SELECT * FROM contacts

Aceasta este o comandă de bază din MySQL, care va spune script-ului să selecteze toate înregistrările din tabela contacts. Dar, de data aceasta, comanda furnizează un rezultat, ea va trebui executată atribuin rezultatele unei variabile:
$query="SELECT * FROM contacts";
$rezultat=mysql_query($query);
In acest caz, întregul conținut al bazei de date va fi atribuit variabilei cu numele $rezultat (care va fi deci o matrice, un tablou). Mai înainte de a putea scoate aceste date va trebui să le extragem ca variabile simple, separate. Pentru asta trebuie să știm câte înregistrări avem în tabelă (deci și în variabila $rezultat ).

Numărarea liniilor

Avem o comandă specială în MySQL pentru calculul numărului de linii din tabelă. Este importantă pentru că în baza de date se fac uzual numeroase actualizări, completări, ștergeri.

$num=mysql_numrows($rezultat);

Astfel, variabila $num va căpăta ca valoare numărul de linii din $rezultat (adică tocmai din baza de date). Acest număr va putea fi folosit în continuare pentru ciclul în care se vor analiza și desface în variable separate câmpurile fiecărei linii.

Construirea ciclului

Avem de scris un ciclu pentru a selecta din tabel (din rezultat) linie cu linie…. Definim un indice, o variabilă $i care va parcurge (cu incrementare) valorile de la 1 la $num .

$i=0;
while ($i < $num) {
OPERATIILE ASUPRA LINIEI
++$i;
}

Acesta este un ciclu tipic în PHP și va executa ansamblul numit OPERATIILE ASUPRA LINIEI de exact $num ori, adică de atâtea ori cât trebuie. La fiecare reluare $i fiind mărit cu o unitate. Astfel $i poate fi folosit și pentru a preciza numărul liniei care se prelucrează.

Asocierea datelor la variabile

In partea pe care am numit-o OPERATIILE ASUPRA LINIEI trebuie să separăm fiecare câmp din linia – înregistrare asociindu-l unei variabile. Folosim pentru asta următoarea secvență:

$variable=mysql_result($rezultat,$i,"numele_campului");

Astfel, pentru a extrage fiecare componentă din baza noastră de date, vom folosi următoarele instrucțiuni:

$nume=mysql_result($result,$i,"nume");
$prenume=mysql_result($result,$i,"prenume");
$telefon=mysql_result($result,$i,"telefon");
$mobil=mysql_result($result,$i,"mobil");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

Nu ne-am ocupat aici de câmpul ID (deși o puteam face) pentru că nu ne este necesar la afișare datelor.

Combinarea Script-ului

Acum putem scrie script-ul complet pentru scoaterea datelor. In acest script datele nu sunt formatate, adică vor fi afișate toate cu același font, predefinit.

<?
$username="username";
$password="password";
$database="baza_noastra_de_date";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Baza de date nu poate fi selectata");
$query="SELECT * FROM contacts";
$rezultat=mysql_query($query);
$num=mysql_numrows($rezultat);
mysql_close();
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while ($i < $num) {
$nume=mysql_result($rezultat,$i,"nume");
$prenume=mysql_result($result,$i,"prenume");
$telefon=mysql_result($result,$i,"telefon");
$mobil=mysql_result($result,$i,"mobil");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");
echo "<b>$nume $prenume</b><br>Telefon: $telefon<br>Mobil: $mobil<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>";
++$i;
}
?>

Formatarea scoaterii

Tot ce avem de făcut este să folosim PHP pentru scoaterile HTML incluzând variabilele în zonele corecte. Cel mai simplu este să închidem tagul PHP și să introducem liniile normale din HTML. Oridecâte ori ajungem la o variabilă o vom include folosind o secvență de forma:

<? echo "$numele_variabilei"; ?>

Putem atunci să folosim un ciclu PHP pentru a repeta o secvență de cod ca cea de mai sus, la includerea variabilelor într-un tablou. Spre exemplu, folosind secvența de cod din lecția precedentă cu ciclul corespunzător, putem formata scoaterile pentru ca să apară într-o tabelă mare:
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif">Nume</font></th>
<th><font face="Arial, Helvetica, sans-serif">Telefon</font></th>
<th><font face="Arial, Helvetica, sans-serif">Mobil</font></th>
<th><font face="Arial, Helvetica, sans-serif">Fax</font></th>
<th><font face="Arial, Helvetica, sans-serif">E-mail</font></th>
<th><font face="Arial, Helvetica, sans-serif">Website</font></th>
</tr>

$i=0;
while ($i < $num) {
$nume=mysql_result($rezultat,$i,"nume");
$prenume=mysql_result($result,$i,"prenume");
$telefon=mysql_result($result,$i,"telefon");
$mobil=mysql_result($result,$i,"mobil");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");
?>

<tr>
<td><font face="Arial, Helvetica, sans-serif"><? echo "$nume $prenume"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo "$telefon"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo "$mobil"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><? echo "$fax"; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><a href="mailto:<? echo "$email"; ?>">E-mail</a></font></td>
<td><font face="Arial, Helvetica, sans-serif"><a href="<? echo "$web"; ?>">Website</a></font></td>
</tr>

<?
++$i;
}
echo "</table>";

Această secvență va afișa antetul tabelului, apoi va adăuga o linie suplimentară pentru fiecare înregistrare din baza de date, formatând datele la scoatere.

Dacă sunteți deja familiarizați cu PHP și HTML, atunci lucrurile sunt probabil destul de clare – de ușor de înțeles. O să explicăm doar una din liniile din tabel, spre exemplu:

<a href="mailto:<? echo "$email"; ?>">E-mail</a>

care construiește o legătură email la adresa transmisă de variabila $email . Asta arată una dintre calitățile importante și utile ale folosirii PHP pentru includerea datelor MySQL . Adică prin astfel de scoateri putem face paginile Web dinamice.

Selectarea unor date

La fel cu afișarea întregii baze de date, PHP poate fi folosit pentru a selecta date individuale, doar anumite înregistrări, sau înregistrările care verifică anumite criterii. Pentru asta trebuie să folosim o variațiune a cererii SELECT . Pentru afișarea întregii tabele am folosit cererea:

SELECT * FROM contacts

Dacă vrem însă să selectăm doar pe acele persoane care au prenumele 'Mihai' vom folosi o cerere de forma:

SELECT * FROM contacts WHERE prenume='mihai'

Ca și la alte cereri – comenzi SQL, avem de fapt propoziții foarte apropiate de formularea curentă din limba engleză. Intr-un mod asemănător vom putea selecta înregistrările pe baza oricărui câmp din baza de date. Dar se poate selecta o înregistrare folosind mai multe câmpuri, adăugând în formularea cererii clauza:

field='value'

Fără a intra în prea multe detalii, vom mai spune că putem folosi variabilele pentru a transmite criteriul dorit pentru selecție. Spre exemplu, dacă dintr-un formular de căutare primim a variabilă numită $nume_cautat putem imagina următoarea secvență:
$query="SELECT * FROM contacts WHERE nume='$nume_cautat'";
$result=mysql_query($query);

Rețineți că la sfârșitul primei linii avem un ' urmat de " , înainte de ; .

Interceptarea Erorilor

Prin scoaterea tuturor informațiilor dintr-o bază de date, este puțin probabil să ajungem la situația când nu mai sunt date. Dar dacă am permis ajustări și, ștergeri și actualizări ale înregistrărilor, atunci se prea poate să ajungem la o eroare. Din fericire, cu PHP și MySQL, avem un mod simplu de a evita o astfel de situație folosind:

$num=mysql_numrows($rezultat);
unde $rezultat conține rezultatul unei cereri – interogări a bazei de date ( precum selectarea tuturor înregistrărilor). Așa cum am discutat mai sus, aceasta va atribui variabilei $num numărul de linii din rezultat . Putem insera în ciclu o comandă de captare/tratare a erorilor folosind o instrucțiune IF :

if ($num==0) {
echo "Baza de date nu conține nici o înregistrare";
} else {
Output Loop
}

Putem dezvolta ramura asta făcând-o mai prietenoasă. Spre exemplu, oferind o legătură la pagina Add Data, de introducere de informații în baza de date, atunci când ea este vidă.

Ordonarea datelor

Nu numai că putem scoate datele în funcție de conținutul unui câmp, dar putem ordona aceste date pe baza unei reguli aplicată conținutului unei coloane (spre exemplu aranjând utilizatorii în ordine alfabetică). In mod normal, afișarea în urma unei interogări se face în ordinea stabilită de identificatorul ID, pornind de la 1 în sus. Putem însă alege modul de ordonare (sortarea) după oricare coloană din tabel.

Spre exemplu, o ordonare utilă ar putea fi după numele de botez. Asta însemnând în ordine ascendentă (crescătoare, de la A la Z și de la 1 la 10…). Pentru a obține un astfel de rezultat folosim următoarea cerere:
SELECT * FROM contacts ORDER BY prenume ASC

Putem folosi, desigur și ordonarea descendentă, specificând DESC în locul lui ASC .

Alte variante cu mysql_numrows și Sortare

Valoarea care i se atribuie (ca mai sus) variabilei $num este foarte importantă, nu numai pentru cicluri și captarea erorilor. Un exemplu poate fi scoaterea doar a ultimelor 5 înregistrări adăugate bazei de date. Mai întâi, avem ordonarea naturală, stabilită de ID, (ultima înregistrare având valoarea maximă a ID), dar vom alege ordinea descendentă.

Astfel vom avea înregistrările începând cu cea mai recentă și terminând cu cea mai veche. Mai trebuie doar să numărăm, afișând doar primele 5.

Desigur, înainte de a începe ciclul de cinci, trebuie să ne asigurăm că $num este mai mare decât 5 . Avem deci o secvență de forma:

if ($num<5) {
$to=$num;
}else{
$to=5;
}

$i=0;
while ($i < $to) {
SECVENTA DE COMENZI mysql PENTRU SCOATERE

Cu alte cuvinte, dacă avem mai mult de cinci linii în tabel atunci ciclul se va face de la 0 la 5. In caz contrar, dacă sunt mai puțin de 5 linii, ciclul va parcurge exact numărul respectiv de linii.

Câmpul ID

Atunci când, am creat baza de date (cartea de adrese), am inclus un câmp numeric numit id. Pe care l-am stabilit ca auto_increment și i-am dat rolul de câmp primar. Am discutat cum acesta are rolul de identificator unic pentru fiecare înregistrare din baza de date. Acum facem un pas înainte, folosind acest câmp pentru a selecta anumite înregistrări din baza de date.

Selecția unei singure înregistrări

Iată cum putem selecta înregistrări din baza de date folosind conținutul unui câmp particular:

SELECT * FROM contacts WHERE field='value'

Atunci, folosind unicitatea câmpului ID putem selecta orice înregistrare din baza de date, folosind:

SELECT * FROM contacts WHERE id='$id'

unde $id este o variabilă conținând numărul unei înregistrări. Spre exemplu, dacă dorim să avem o pagină Web generată dinamic dintr-o bază de date cu un singur script PHP, putem scrie script-ul ca să includă pagini Web distincte ca înregistrări ale bazei de date. Atunci, folosind câmpul id, putem selecta fiecare pagină individuală plasând-o la soatere. Putem chiar folosi chiar URL-ul paginii pentru a specifica înregistrarea dorită

http://www.centrul_propriu.ro/stiri/items.php?item=5476

Iar script-ul PHP să caute înregistrarea care are numărul de ordine (id-ul) care corespunde valorii variabilei $item, care în acest caz este 5476

Legături la o singură înregistrare

Folosind această metodă de alegere a înregistrării folosind URL-ul, înregistrarea poate fi extinsă prin generarea dinamică a URL-ului. Pare cam complicat. Vom vedea cum realizăm o pagină de aducere la zi a bazei de date cu adresele. Cu ideea ca utilizatorul să-și poată modifica propriile detalii din înregistrare.

Pentru asta, vom include o nouă coloană cuprinzând o legătură Update . Această legătură conducând la o pagină care să permită utilizatorului să actualizeze înregistrarea. Pentru a selecta înregistrarea din acea pagină vom pune:

?id=$id

Căpătând identificatorul id al înregistrării, secvența aceasta va crea o legătură la fiecare din înregistrări.

Script-ul de actualizare

Prin folosirea variabilei $id , legăturile respective pot transmite valoarea corecta a identificatorului ID către script, astfel ca acesta să poată actualiza baza de date. Vom realiza deci un script de actualizare, care va avea două părți:

Prima parte a script-ului de actualizare folosește procedeul de selecție a unei singure înregistrări, așa cum l-am scris în lecția precedentă, adăugând doar câteva elemente HTML pentru a-l face mai util. Mai întâi, ne connectăm la baza de date și selectăm înregistrarea potrivită.

$id=$_GET['id'];
$username="nume_utilizator";
$password="parola";
$database="baza_de_date";
mysql_connect(localhost,$username,$password);
$query=" SELECT * FROM contacts WHERE id='$id'";
$result=mysql_query($query);
$num=mysql_numrows($rezultat);
mysql_close();
$i=0;
while ($i < $num) {
$nume=mysql_result($rezultat,$i,"nume");
$prenume=mysql_result($rezultat,$i,"prenume");
$telefon=mysql_result($rezultat,$i,"telefon");
$mobil=mysql_result($rezultat,$i,"mobil");
$fax=mysql_result($rezultat,$i,"fax");
$email=mysql_result($rezultat,$i,"email");
$web=mysql_result($rezultat,$i,"web");
Zona de cod suplimentar
++$i;
}

Unde 'Zona de cod suplimentar' marchează porțiunea din script unde vor apare comenzile de actualizare. Adică formatarea HTML pentru scoatere:

<form action="updated.php" method="post">
<input type="hidden" name="ud_id" value="<? echo "$id"; ?>">
Numele de Familie: <input type="text" value="ud_first" value="<? echo "$nume"?>"><br>
Numele de Botez: <input type="text" value="ud_last" value="<? echo "$prenume"?>"><br>
Numărul de Telefon: <input type="text" value="ud_phone" value="<? echo "$telefon"?>"><br>
Numărul de Mobil: <input type="text" value="ud_mobile" value="<? echo "$mobil"?>"><br>
Numărul de Fax: <input type="text" value="ud_fax" value="<? echo "$fax"?>"><br>
Adresa E-mail: <input type="text" value="ud_email" value="<? echo "$email"?>"><br>
Adresa Web: <input type="text" value="ud_web" value="<? echo "$web"?>"><br>
<input type="Submit" value="Update">
</form>

Așa cum se poate vedea, această secvență construiește (scoate) un formular standard, dar în locul zonelor goale, așa cum apăreau în formularul pentru introducerea datelor, de data asta avem conținutul câmpului respectiv din înregistrarea în cauză (care-i de actualizat). Asta îl face mai adaptat scopului, mai comod de folosit.

Actualizarea bazei de date

Tot ce mai avem de făcut este actualizarea efectivă a bazei de date. Asta este o operație simplă care implică o nouă cerere pentru baza de date:

$query = "UPDATE contacts SET nume = '$ud_first',prenume = '$ud_last',telefon = '$ud_phone',mobil = '$ud_mobile',fax = '$ud_fax',email = '$ud_email',web = '$ud_web' WHERE id = '$ud_id'";

Această cerere spune sistemului de gestiune de baze de date să actualizeze tabela contacts în acele linii în care ID coincide cu valoarea din $ud_id (care, așa cum se poate vedea din formularul anterior, a primit valoarea id a înregistrării pe care o actualizăm), modificând următoarele câmpuri cu valorile specificate (care au fost introduse cu ajutorul formularului).

Această cerere poate fi înglobată într-un script simplu:

$ud_id=$_POST['ud_id'];
$ud_first=$_POST['ud_first'];
$ud_last=$_POST['ud_last'];
$ud_phone=$_POST['ud_phone'];
$ud_mobile=$_POST['ud_mobile'];
$ud_fax=$_POST['ud_fax'];
$ud_email=$_POST['ud_email'];
$ud_web=$_POST['ud_web'];
$username="nume_utilizator";
$password="parola";
$database="baza_de_date";
mysql_connect(localhost,$username,$password);
$query="UPDATE contacts WHERE id='$ud_id' SET first='$ud_first' last='$ud_last' phone='$ud_phone' mobile='$ud_mobile' fax='$ud_fax' email='$ud_email' web='$ud_web'";
mysql_query($query);
echo "Actualizarea s-a făcut";
mysql_close();

Asta va actualiza baza de date transmițând și o confirmare utilizatorului.

Stergerea înregistrărilor

Ca și cu pagina de actualizare, vom construi o pagină pentru a șterge una sau mai multe linii din baza de date. Trebuie să-i transmitem poziția (ID-ul) înregistrării, printr-un URL, spre exemplu:

delete.php?id=9

Scriptul care va face asta, numit delete.php, este aproape identic cu cel de actualizare a bazei de date, cu excepția comenzii MySQL (modului în care este construită cererea). In locul comenzii SQL UPDATE , vom folosi:

DELETE FROM contacts WHERE id='$id'

Ciclurile

La acest punct este momentul să menționăm și un alt mod de folosire a ciclurilor cu o bază de date. Putem folosi un ciclu pentru a executa un șir de cereri. Spre exemplu, dacă trebuie să schimbăm – extragem toate înregistrările dintr-o bază de date în care apare ca prenume Serban pentru a realiza un Website www.serban.ro:

Partea Standard de Conectare la Baza de Date

$query=" SELECT * FROM contacts WHERE prenume='Serban'";
$rezultat=mysql_query($query);
$num=mysql_numrows($rezultat);

$i=0;
while ($i < $num) {
$id=mysql_result($rezultat,$i,"id");
$query1="UPDATE contacts SET web='http://www.serban.ro' WHERE id='$id'";
mysql_query($query);
++$i;
}
mysql_close();

Pentru economia de timp

Atunci când construim un script complex folosind bazele de date, apare des secvența de conectare la baza de date. De aceea, pentru a simplifica lucrurile, se poate fie să creem un fișier cu numele de utilizator și parola sau chiar un fișier de conectare. Spre exemplu, un fișier "username/password" poate fi construit cu numele:

dbinfo.inc.php
cuprinzând în el:

<?
$username="numele_de_utilizator_al_bazei_de_date";
$password="parola";
$database="nume_baza_de_date";
?>

In care precizăm datele concrete potrivite (numele_de_ utilizator _al_bazei_de_date, parola, nume_baza_de_date). Atunci în fișierele php vom folosi, chiar la început, următoarea secvență, care va include scriptul de mai sus:

include("dbinfo.inc.php");
sau, atunci când acesta se află în alt director:

include("/[traseul complet]/dbinfo.inc.php");

Atunci, vom putea folosi în continuare variabilele $username, $password și $database în script-ul nostru, fără a avea nevoie să le definim de fiecare dată. De asemeni, dacă vom modifica cândva aceste informații, spre exemplu trecând pe alt server web, tot ce va fi de schimbat va fi în acest unic fișier.

Aceeași schemă o putem folosi pentru conectarea la baza de date, plasând și comanda de conectare în fișier. Atunci va trebui, însă, să ne asigurăm de închiderea conexiunii, pentru a nu avea probleme cu serverul MySQL.

Căutarea

Se poate realiza și o căutare limitată în baza de date folosind funcția specială din MySQL. Adică prin folosirea funcției LIKE , în forma:

SELECT * FROM nume_tabela WHERE nume_camp LIKE '%$string%'

Asta însemnă că LIKE va spune bazei de date să folosească posibilitățile proprii de căutare. Semnele % au semnificația că orice alte date pot să apară în poziția lor și variabila $string va conține cererea de căutare. Adică putem avea acolo un cuvânt, sau un număr, spre exemplu:

LIKE '%pian%'

ceea ce va conduce la scoaterea liniilor care includ cuvântul pian în câmpul specificat.

Similar, putem renunța la unul din semnele % astfel ca să precizăm poziția șirului de caractere:

LIKE 'pian%'

Astfel vom putea selecta doar liniile în care câmpul specificat începe cu prefixul pian, caz în care, spre exemplu, expresia următoare va fi evitată:

Un pian se află pe scenă.

Concluzii

Folosirea bazelor de date pe Web deschide noi și mari posibilități de lucru în Internet și poate face mult mai puternic un centru Web, economisind timpul de actualizare, permițând utilizatorilor să interacționeze (să răspundă) și multe altele.

CAPITOLUL III – Aplicația „ExamStud”- produsul informatic

3.1. Structura aplicației

Aplicația are structura alcătuită pe următoarele categorii de utilizatori:

Administatorul aplicației

Profesorul

Studentul

Toate tipurile de utilizatori necesită un nume și o parolă pentru autentificare, pentru care se folosesc sesiuni pentru identificrea persoanei logate. La iesirea din cont se va distruge sesiunea creată la logare.

Administratorul poate să introducă, să modifice și să steargă în baza de date, prin intermediul aplicației, date referitoare la profesori, respectiv la studenți. Explicat mai pe larg, el poate să adauge (modifice) prin intermediul unor form-uri date pentru studenți: nume, prenume, semestrul, tip admitere, utilizator, parola (acesta din urmă nu poate fi vizualizat, ci doar modificat, adăugat) și respectiv pentru profesori: nume, prenume, funcție, materii predate, utilizator , parola.

Profesorul are posibilitatea de a vizualiza, actualiza (adăugare / modificare / ștergere) intrebările materiilor pe care le predă și de a crea un test pe o materie disponibilă, introducând înregistrările: data la care se dă testul, durata lui, și întrebările testului. Acestea din urmă sunt sunt introduse din baza de date a întrebărilor, pe criterii de dificultate. El mai are optiunea de a vizualiza situația studenților săi și de a-și modifica parola.

Studentul poate să vizualizeze situația notelor, schimbarea parolei și examinarea propriu-zisă a materiilor studiate în semestrul respectiv (și cărora li s-a facut test de către profesor), la data precizată în prealabil. El poate să intra in examen în primele cinci minute de la începerea examinării. Examenul se finalizează în momentul în care timpul afișat va ajunge la finl (caz în care se va trimite răspunsurile indicate). În situația în care studentul finalizizează lucrarea înainte de expirarea timpului acordat, acesta poate apăsa butonul Termină. Notarea se face pe loc, studentul fiind redirecționat către pagina vizualizării notelor.

3.2. Structura bazei de date

Baza de date a aplicației este făcută pe serverul de MySql și are în componența ei zece tabele, și anume: login, profesor, student, materie, predarematerie, note, întrebări, întrebăriteste, test., situațieîntrebări. În fiecare din aceste tabele sunt stocate informații diferite preluate de aplicație și procesate independent, creându-se astfel un site web dinamic, totul fiind introdus în tabele, putând apoi fi preluate de aplicație sau modificate de aceasta.

În continuare este prezentată structura bazei de date :

Tabela login, folosită pentu autentificare, are urmatoarele câmpuri:

Codu – este cheie primara (nu există două inregistrări la fel) și stochează codurile profesorilor, al studenților și al administratorului

User – stochează numele cu care se autentifică utilizatorul (profesori, studenți sau administrator)

Parola – stochează parolele cu care se autentifică utilizatorii (profesori, studenți sau administrator)

Tipu – este de forma: a pentu administrator, p pentru profesori, s pentru strudenți

Tabela profesor are urmatoarele câmpuri:

Codp – este cheie primara (nu există două inregistrări la fel) și stochează codurile profesorilor

Nume – stochează numele profesorilor

Prenume – stochează prenumele profesorilor

Funcție – stochează funcțiile profesorilor

Tabela student are urmatoarele câmpuri:

Cods – este cheie primara (nu există două inregistrări la fel) și stochează codurile studenților

Nume – stochează numele studenților

Prenume – stochează prenumele studenților

Semestrul – stochează semestrele în care se află studenții

Tipadmitere – stochează tipul formei de învățământ, adică, facultate, colegiu, master, postuniv, idd

Tabela materie are urmatoarele câmpuri:

Codmat – este cheie primara (nu există două inregistrări la fel) și stochează codurile materiilor

Denumire – stochează denumirile materiilor

Semestrul – stochează semestrele în care se predau materiile

Tabela predarematerie, indică materiile predate, are urmatoarele câmpuri:

Codmat – stochează codurile materiilor

Codp – stochează codurile profesorilor

Tabela note are urmatoarele câmpuri:

Cods – stochează codurile studenților

Codmat – stochează codurile materiilor

Nota – stochează notele studenților

Tabela întrebări care are urmatoarele câmpuri:

Codi – stochează codurile întrebărilor

Codp – stochează codurile profesorilor care predau materia respectivă

Codmat – stochează codurile materiilor

Întrebare – stochează intrebările

Variantaa – stochează varianta a

Variantab – stochează varianta b

Variantac – stochează varianta c

Variantad – stochează varianta d

Variantae – stochează varianta e

Variantaf – stochează varianta f

Variantacorecta – stochează variantele corecte

Dificultate – stochează gradele de dificultate ale intrebărilor

Tabela întrebăriteste care are urmatoarele câmpuri:

Codi – stochează codurile întrebărilor care sunt incluse în testul creat

Codmat – stochează codurile materiilor diponibile pentru examinare

Tabela test care are urmatoarele câmpuri:

Codp – stochează codurile profesorilor care dețin testele disponibile

Codmat – stochează codurile materiilor diponibile pentru examinare

Timp – stochează timpul examinării

Datatest – stochează data și ora la care se va desfășura testul

Tabela situație întrebări care are urmatoarele câmpuri:

Codi – stochează codurile întrebărilor

Codmat – stochează codurile materiilor

Cods – stochează codurile studențiilor

Variantaaleasa – stochează variantele alese de studenți în momentul în care se termină examenul

3.3. Tehnologii folosite

Această aplicație a fost dezvoltată cu ajutorul mai multor tehnologii:

Html (HyperText Markup Language)

Php (HyperText Preprocesor)

MySql

JavaScript

În html s-a dezvoltat, în principal, mediul vizual al aplicației, realizându-se și legăturile dintre pagini. Cu ajutorul acestuia se poate interacționa cu limbajul php, adică se pot include secvențe scrise în php în cadrul tagurilor html. Serverul Apache lucrează, la început, codul php și după ce s-a ajuns la rezultat este introdus în tagul din care face parte. Se folosesc de asemenea și css-urile (foile de stil) care oferă posibilitatea unei formatări structurată, din punct de vedere vizual, a paginilor scrise în html.

Prin php se realizează și interogări pe serverul de mysql, adică cererile de actualizare, sortare pe anumite criterii, a bazei de date. Serverul de mysql prelucrează aceste interogări, lucrând efectiv cu tabelele din baza de date.

JavaScrip este folosit pentru afisarea descrescătoare a timpului rămas în cadrul examenului .

3.4. O scurtă privire în spatele aplicației

În continuare sunt prezentate câteva exemple din codul aplicației, care sunt mai importante. Tot lucrul cu baza de date este făcut cu ajutorul interogărilor bazate pe variabile reținute cu ajutorul sesiunilor, în deosebi codul utilizatorului.

Spre exemplu, pentru a selecta materiile predate de profesorul logat, trebuie introduse mai întâi codurile materiilor predate de el din tabelea predarematerie și după aceea pentru fiecare din aceste coduri, trebuie selectat din tabela materie numele acesteia :

$result = mysql_query("select codmat from predarematerie where codp = $codprof ") or die("Selectare esuata" . mysql_error());

while ($myrow = mysql_fetch_array($result)){

$result1 = mysql_query("select codmat,denumire from materie where codmat = $myrow[0] ");

Alt exemplu, este acela prin care se selectează pentru fiecare profesor, materiile predate de acesta. Acest lucru se realizează printr-un join între tabela login și profesor, prin care selectăm datele profesorilor. Pentru fiecare înregistrare se face din nou un join între tabela materie și predare materie pentru aflarea denumiri materiilor:

$query = mysql_query("select * from login a,profesor b where a.tipu = \"p\" and a.codu=b.codp") or die("Selection failed");

while ($row = mysql_fetch_array($query)) {

$mat=mysql_query("select a.denumire from materie a, predarematerie b where b.codp=$cod and a.codmat=b.codmat");

Pentru afișarea descrescătoare a timpului rămas în cadrul examenului, am folosit javascript. Această funcție este apelată la un interval de timp definit (un minut):

seconds -= 1;

if (seconds < 0){

seconds += 60;

minutes -= 1;

if (minutes < 0){

minutes += 60;

hours -= 1;

}

}

if (hours == 0 && minutes == 0 && seconds == 0){

Clock.innerHTML = "Timpul a expirat!";

verifica.submit();

return ;

}

if (hours < 10)

hours = "0" + hours;

if (minutes < 10)

minutes = "0" + minutes;

if (seconds < 10)

seconds = "0" + seconds;

CAPITOLUL IV – Prezentarea aplicației “ExamStud”

4.1. Introducere

Aplicația “ExamStud” are ca scop principal examinarea studenților unei facultăți prin intermediul internetului, la distanță. Ea posedă trei tipuri de utilizatori: administrator, profesor și student care au bine definite atribuțiile fiecare în parte. Avantajul studentului este acela că poate fi examinat oriune ar fii și primește rezultatul imediat ce a terminat examenul, avantajul profesorului examinator este acela că el poate construi examenul pe baza unor întrebări deja existente, care pot fi introduse pe grade de dificultate.

Tema dezbătută în prezenta lucrare “Evaluarea on-line” reprezintă una din temele de actualitate ale informaticii în general, tratând cu precădere partea de e-learning din cadrul aplicațiilor Web.

4.2. Prima pagină

Index-ul, prima pagină, a proiectului “ExamStud” este destinată în special pentru autentificarea administratorului, a profesorului și a studentului, având și unele informații utile despre aplicație, regulamentul de folosire, noutăți apărute ce pot fi vizualizate de oricine făra a fi nevoie de autentificare.

Din meniu se pot accesa următoarele legături:

Regulamentul, care afișează condițiile de folosire a aplicației

Informații utile, prin care utilizatorii vor putea afla indicații cu privire la aplicație, în general

Autentificare profesor, de unde profesorii și administratorul aplicației își pot accesa contul prin introducerea numelui de utilizator și a parolei

Autentificare student de unde studenții își pot accesa contul prin introducerea numelui de utilizator și a parolei

4.3. Tipul Administrator

Administratorul aplicației are posibilitatea de actualizare a studenților și a profesorilor, în baza de date, prin intrermediul unor form-uri. Navigarea în acest cont se face cu ajutorul meniului, care cuprinde legăturile către Administrare studenți, Administrare profesori și Iesire.

Administrarea studenților și a profesorilor presupune adăugarea, modificarea și ștergerea câmpurilor din baza de date aferente fiecăruia .

Pentru studenți se pot actualiza următoarele câmpuri:

nume

prenume

semestrul

tip admitere

utilizator

parola (care poate fi doar introdusă sau modificată, nu și vizualizată).

Pentru profesori se pot actualiza câmpurile:

nume

prenume

funcție

utilizator

parola (care poate fi doar introdusă sau modificată, nu și vizualizată)

materiile predate (materiile sunt intr-un listbox în care se pot selecta cu tasta Ctrl și clic-stânga mouse pe mai multe înregistrari)

4.3. Tipul Profesor

Meniul conturilor de profesor are structura:

Modifică întrebări – modificarea întrebărilor din baza de date organizate pe discipline

Adaugă întrebare – întroducerea întrebărilor în baza de date

Creare test – creerea unui test nou

Situație studenți – situația scolară a studenților examinați

Schimbare parolă – modificarea parolei contului

Ajutor – explicarea modului de folosire al contului

Ieșire – ieșirea din cont

Profesorul are posibilitatea de a vizualiza, modifica și șterge întrebările din baza de date, după ce a fost selectată în prealabil materia pentru care se pot face acțiunile acestea, prin:

modificarea unei întrebari din baza de date

ștergerea unei întrebari din baza de date

Atunci când se modifică o intrebare existentă în baza de date, apare un form, similar cu cel de la adăugare întrebare, cu înregistrarea respectivă, afișată în cadrul acestuia, pentru a permite modificarea.

La terminarea fiecărei operațiuni pagina se încarcă din nou pentru a vizualiza baza de date modificată.

Prin accesarea legăturii din meniu, Adaugă întrebare, va apărea un form care cuprinde:

o căsuță de tip textarea, în care se introduce întrebarea

șase textbox-uri în care se introduc variantele întrebării, fiecare textbox având câte un checkbox care se bifează atunci când varianta aleasă este corectă

un combobox, pentru alegerea materiei din care face parte

cinci butoane radio prin care se poate selecta dificultatea materiei.

un buton Adaugă, care finalizează acțiunea de adăugare, printr-un simplu click

În continuare este prezentată modalitatea prin care un profesor crează un test, care poate fi modificat după cerințele lui, adică posibilitatea de a avea un test făcut pe grade de dificultate, ușurându-i astfel foarte mult munca.

Pentru aceasta trebuie, în prealabil:

să aleagă din meniu, legătura Creare test, prin care este accesat form-ul folosit pentru introducerea datelor referitoare la examen

să aleagă materia dintr-un combobox, care conține materiile predate de acesta

să introducă data și ora la care va începe examenul (zi, lună, ora, minutul )

să introducă timpul examinării exprimat în ore și minute

să acționeze butonul Crează test printr-un simplu click

O data introduse datele din pagina anterioară și accesând pagina următoare, apar două tabele:

primul, cel din partea superioară, conține întrebările care vor apărea în test, ele prezintă opțiunea prin care pot fi păstrate sau scoase din test

al doilea tabel conține întrebările existente în baza de date, create de profesor. Ele sunt grupate pe grade de dificultate, putând fi accesate prin intermediul unor butoane:

foarte ușor

ușor

normal

greu

foarte greu

Acesta din urmă poate să adauge o întebare nouă în test, adică în prima tabelă.

Profesorul poate opta pentru legătura Situație studenți, din meniu, prin care se vizualizează tabela situației notelor sudenților. Prin accesarea acestei tabele pot fi vizualizate doar înregistrările referitoare la materiile predate de acesta.

De asemenea, profesorul are posibilitatea de a-și schimba parola, prin accesarea legăturii din meniu, Schimbare parolă. Modificarea parolei se face prin introducerea parolei vechi și a celei noi de două ori, pentru a nu interveni erori .

El mai poate consulta un mic ajutor, prin legătura Ajutor din meniu, referitoare la pagina destinată lui, cât și legătura spre ieșire din cont.

4.4. Tipul [anonimizat] conturilor de student are următoarea structură:

Situație note – vizualizarea situației școlare

Examinare – evaluarea studentului

Schimbare parolă – modificarea parolei contului

Ajutor – explicarea modului de folosire al contului

Ieșire – ieșirea din cont

Studentul are posibilitatea a-și vizualiza situația notelor la disciplinele la care a fost deja testat, prin accesarea din meniul principal al legăturii Situație note

Pentru a putea fi evaluat la o materie anume, studentul trebuie să fie înscris în semestrul în care materia respectivă este predată, iar testul să fie făcut înaite de examinare de profesorul titular pe disciplina respectivă. În ceea ce privește examinarea, aceasta trebuie să se efectueze la data și ora corespunzătoare cerințelor.

Deci, vor apărea afișate, în prealabil, materia, data și ora începerii examenului cât și durata acestuia. Legătura către examen este accesibilă în momentul în care data și ora sunt aceleași cu data curentă. Studentului îi este permisă “întârzierea” a maxim cinci minute de la începerea examenului, ulterior el nemaiputând participa la examinare.

O data intrat în examen, studentul nu poate părăsi pagina până când nu răspunde la întrebări. Aceasta se poate realiza îninte de a se termina timpul, prin apăsarea tastei Termină. Dacă timpul a expirat atunci se vor transmite răspunsurile bifate până în acel moment.

Timpul examenului va descrește de la valoarea inițială până când acesta înregistrează 00:00:00. În acest interval de timp, studentul va trebui să răspundă la întrebări, prin intermediul unor checkbox-uri.

Răspunsurile pot avea: unul sau mai multe variante de răspuns corecte sau pot exista întrebări cu nici un răspuns corect.

Ca și la tipul profesor și aici studentul își poate schimba parola, pentru securizarea contului, și mai are posibilitatea să iasă din contul său.

Concluzii

Lucrarea este structurată pe trei capitole, fiecare din acestea tratând pe rând probleme legate de “Fundamente teoretice” , ”Aplicația „ExamStud” – produsul informatic” , pentru ca în ultima parte a lucrării să fie prezentată pe larg aplicația din punctul de vedere al utilizatorilor finali.

În esență, examinarea online are multe avantaje cum ar fi: timpul alocat examinării este mai mic, ușurința creării de examene, notare automată de către calculator.

În ultima perioadă, datorită extinderii internetului pe întreg mapamondul, fapt pentru care folosirea e-learning-ului este din ce în ce mai răspândită. Nevoia unei Universități la nivel mondial este posibilă doar prin intermediul internetului. O universitate care predă cursuri, examinează studenți din întreaga lume, în toate limbile existente și având o bază de date cu o capacitate de stocare imensă, este posibilă doar în lumea virtuală.

Similar Posts