Tema 2: Implementarea functionalitatilor de baza

Responsabil: Popovici Matei <pdmatei@gmail.com>
Data publicarii: 05-04-2009
Data ultimei modificari: 28-04-2009 (modificarea deadline-ului)
Deadline: 04-05-2009

Implementati functionalitatile aplicatiei descrise de voi la tema 1. Daca constatati ca planul de implementare descris de voi in tema 1 necesita modificari, le puteti face.
Aplicatia voastra nu trebuie sa contina la acest nivel decat un mecanism simplu de autentificare. Restul elementelor care tin de securitatea aplicatiei vor fi implementate la tema 3.

Sugestii pentru redactarea temei:

- gasiti o solutie pentru reutilizarea codului HTML in aplicatia voastra (puteti folosi si exemplele de la laborator);
- folositi un mecanism generic de inserare/modificare/obtinere a informatiilor in BD (vezi lab 2);
- folositi un mecanism generic de parcurgere/afisare a elementelor aplicatiei voastre (vezi lab 3);
- folositi ierarhii de clase (in loc sa implementati mai multe clase cu functionalitati asemanatoare, scrieti o clasa de baza care sa contina functionalitatile comune, si derivati din ea clasele cu comportament specific);
- evitati sa folositi copy/paste pentru cod PHP; scrieti functii pentru astfel de situatii;
- folositi taguri <?php ?> pentru imbricarea codului PHP in codul HTML, evitati afisarea unei pagini (sau a componentelor) HTML cu echo;

- gasiti o solutie pentru persistenta parametriilor (GET sau POST), daca este cazul. (o astfel de problema am intalnit si in lab4, cand restrictionam o lista pentru a afisa doar anumite inregistrari, si apoi incercam o sa sortam. Observam atunci ca lista devenea sortata, insa continea TOATE inregistrarile, fara sa se mai tina cont de restrictie. Aveam nevoie asadar de un mecanism de persistenta pentru parametrii.)


Barem de notare:
- claritatea codului (structura fisierelor, denumiri sugestive, indentare): 15%
- cod OO (Orientat Obiect): 15%
- baza de date si tabele optime (care sa evite pastrarea de informatie redundanta): 10%
- izolarea zonelor de afisare de restul codului: 10%
- reutilizarea codului (evitarea copy/paste la codul php): 10%;
(obs: punctajul de mai sus se va acorda doar temelor care MERG: au cel putin o functionalitate implementata)

- implementarea efectiva a functionalitatilor de baza :40%
Observatie: pentru obtinerea punctajului maxim nu este necesara implementarea tuturor facilitatilor descrise in arhitectura (tema1), ci doar a celor esentiale;
exemple de astfel de facilitati: recuperare lista produse(elemente) (independent de context: pentru cautare, pentru browsing pe categorii, pentru sectiuni "cele mai ..."), autentificare, structura categoriilor (sau a altor entitati), etc.
Daca in aplicatie exista mai multe functionalitati asemanatoare sau identice, se poate implementa doar UNA dintre ele. (exemplu de astfel de functionalitati: sectiuni "cele mai populare produse", "cele mai vandute produse", etc; astfel de sectiuni sunt esentialmente liste structurate dupa criterii diferite)

Reguli de implementare:
- tema trebuie scrisa in PHP 5, folosind baze de date MySQL. Este recomandat sa folositi WAMP in dezvoltarea aplicatiei voastre.
- baza de date trebuie sa aiba numele pwtema2;
- tema trebuie sa contina un fisier .sql care sa creeze aceasta baza de date, tabelele definite de voi, precum si cateva date de test (luati ca exemplu fisierele .sql anexate laboratoarelor).
- fisierul .sql trebuie sa aiba numele pwtema2.sql;
- tema consta intr-o arhiva .zip ce contine toate fisierele necesare pentru rularea aplicatiei
- arhiva va fi denumita astfel: [Nume][Prenume][Grupa]Tema2.zip
- conventiile de mai sus TREBUIE respectate, pentru a asigura o corectare rapida si eficienta. Temele care nu respecta aceste conventii vor fi depunctate.

Bonus:
- reutilizarea conexiunilor la DB - 10% (in laboratoare, am realizat conexiuni la baza de date de cate ori am dorit executarea unui query, ceea ce nu este in general eficient; minimizati numarul de conexiuni la baza de date, din aplicatia voastra)

- pt aplicatii complexe 100% functionale.