SlideShare a Scribd company logo
1 of 10
Download to read offline
Moosik
Neagu Gabriela,Vătămănelu Mădălina
Facultatea de Informatica,Universitatea Alexandru Ioan Cuza,Iasi
gabriela.neagu@students.info.uaic.ro
madalina.vatamanelu@students.info.uaic.ro
Abstract. Aplicatie Web pentru prezentarea comparativa a topurilor muzicale
de diverse genuri. Utilizatorii vor putea vota melodiile preferate, reactualizarea
efectuandu-se in mod dinamic. Atunci cand o melodie votata ajunge pe primul
loc sau cand paraseste topul, utilizatorul respectiv va fi automat instiintat prin e-
mail. Se pot propune noi intrari in top via o interfata Web, pe baza autentificarii
utilizatorului. Diverse informatii referitoare la top (modificarea clasamentului)
sunt facute disponibile via un flux de stiri RSS/Atom.
Cuvinte-cheie: muzica,top,RSS,aplicatie Web
1 Introducere
Muzica este arta prezenta in viata de zi cu zi a omului, exprimand trairile,ideile,
sentimentele, evolutia, cultura unei personae. Muzica este arta combinării notelor în
succesiune și simultan într-o formă plăcută estetic, organizarea ritmică a acestor note
și integrarea lor într-o lucrare completă.
Exista in momentul actual o multime de aplicatii Web care ofera posibilitatea de
vizualizare a melodiilor dupa categorii, dar nu exista aplicatii care sa mentina istoricul
voturilor.
Am realizat aceasta aplicatie Web deoarece exista foarte multe genuri musicale,
dar nu exista un loc in care poti accesa aceste melodii dupa anumite categorii si dupa
un anumit numar de voturi.Astfel cei interesati trebuie sa se inregistreze, si astfel vor
beneficia de o afisare personalizata a paginilor, in functie de intoricul tuturor voturilor
sale
2 Tehnologii utilizate
Pentru partea de client am ales:
 HTML5 (HyperText Markup Language)- pentru structurarea și prezentarea
conținutului paginilor
 CSS3 (Cascading Style Sheets) - pentru formatarea elementelor unui
document HTML
 JavaScript – limbaj pentru introducerea unor funcționalități în paginile web,
codul Javascript din fiind rulat de către browser.
 AJAX poate fi utilizat in mai multe tipuri de aplicatii care pot fi incluse
intr-o pagina web, dar cel mai folosit este pentru navigare de la un continut la
altul al site-ului. Aceasta navigare se face de obicei prin link-uri, acestea
contin o adresa URL catre pagina/continutul respectiv. Metoda standard de
transmitere a datelor asresei URL din link-uri la server este GET.
Pentru partea de server:
 PHP (Php: Hypertext Preprocessor) - limbaj de programare pe partea de
server folosit la dezvoltarea aplicatiilor Web
 SESSION- reprezinta o modalitate prin care PHP retine informatii de la o
pagina la alta. Odata cu initializarea unei sesiuni, utilizatorul poate pastra
anumite variabile chiar daca in continuare viziteaza si alte pagini ale site-
ului. In principiu informatia se pastreaza pana la inchiderea browser-ului, sau
pana cand utilizatorul distruge in mod intentionat sesiunea curenta.
Pentru memorarea datelor:
 baza de date SQL pe serverul fenrir al facultatii ,care va memora toate datele
necesare autentificarii utilizatorilor
2.1 HTML
Acronimul de la HyperText Markup Language şi reprezintă un limbaj pentru
crearea şi marcarea (formatare, aranjare) unui document astfel încât să poată fi
publicat pe World Wide Web şi vizualizat cu ajutorul unui browser.
Termenul de hypertext desemnează un material sub formă de text şi imagine, inter-
conectat într-o manieră complexă, nesecvenţială, în care utilizatorul poate naviga,
căuta informaţii referitoare la un obiect. Hypertext-ul trebuie interpretat ca un text
care semnalează o legătură la o altă informaţie web, de obicei un alt document web, şi
este identificat prin subliniere sau culoare, pentru a-l deosebi de textul simplu.
Hypermedia este un termen aproape sinonim celui de hypertext, singura deosebire
fiind faptul că subliniază prezenţa şi a unor elemente care nu sunt de tip text, cum ar fi
animaţii, secvenţe sonore sau secvenţe video. HTML se utilizează din 1990, cu-
noscând câteva versiuni de dezvoltare, fiecare dintre acestea îmbunătăţind perfor-
manţele limbajului. Ultima variantă (la data elaborării acestui ghid) este HTML 5 ce
include facilităţile versiunilor anterioare (tag-uri de marcare, tag-uri pentru
hiperlegături, antete, paragrafe, liste, elemente de meniu, formatare caractere, imagini
in-line şi tag-uri pentru schimbul de date dinamic între utilizatori), adăugând facilităţi
şi extensii pentru numere, tabele şi elemente de control.
2.2 CSS
Cascading Style Sheets (CSS) este un limbaj pentru stiluri folosit pentru a descrie
prezentarea (aspectul si formatarea) unui document scris într-un limbaj de marcare.
Aplicatia sa cea mai cunoscuta este realizarea stilului paginilor web scrise în HTML
si XHTML, dar limbajul poate fi aplicat oricarui tip de document XML.
CSS specifica o schema prioritara pentru a determina care reguli de stil se aplica
daca doua sau mai multe reguli se suprapun pentru un element particular. În acest asa-
numit cascade, prioritatile sau greutatea sunt determinate si atribuite regulilor, astfel
încât rezultatele sunt predictibile.
2.3 JavaScript
Javascript este un limbaj de programare care face posibil ca paginile web sa fie
mai interactive. Scripturile Javascript sunt introduse in pagina HTML si sunt inter-
pretate si executate de browser. Javascript poate fi considerat o unealta foarte buna
daca doriti sa controlati continutul paginilor in functie de data, ora, sistemul de
operare sau browserul utilizatorilor, sa faceti site-uri interactive, care sa comunice cu
vizitatorii, site-uri dinamice, sa validati datele primite din formulare, dar nu numai
atat, acestea fiind doar cateva din posibilitatile pe care le ofera acest limbaj.
2.4 PHP
PHP este limbajul ideal pentru construirea de pagini web dinamice. Este usor de
invatat, open-source, poate fi rulat pe mai multe platforme si se poate conecta la mai
multe tipuri de baze de date. Cel mai important aspect al limbajului este insa posibili-
tatea de a fi imbricat cu cod HTML. Putem astfel crea pagini HTML statice si din loc
in loc, acolo unde este nevoie, sa introducem dinamism cu ajutorul PHP.
In acest modul am stocat toate fisierele de tip .html si .php folosite la constuirea
acestui sit Web.
3 Arhitectura aplicatie
Aplicatia ofera o maniera usoara si simpla de vizualizare a topurilor musicale ex-
istente pe server. Orice vizitator are oportunitatea de a naviga prin toate topurile ex-
istente, de a afla informatii despre un top, precum descriere, lista tuturor melodiilor
existente,top 10 a celor mai votate melodii si accesarea Rss-ul site-ului, ce contine
ultimile intrari si iesiri din top.
Pentru vizitatorii interesati de aplicatia anoastra,exista un modul de inregistrare,in
care trebuie sa introduca cateva date de interes,precum username ,parola si email,
dupa care exista un modul de login, in care se pot loga cu contul nou creat. Odata
logati au mai multe optiuni, precum: voteaza(o singura data pentru un anumit top
musical), primeste mail atunci cand o melodie votata ajunge pe primul loc,sau cand o
melodie votata iese din top 10 si adauga o noua intrare in top.
Aplicatia retine pentru fiecare utilizator melodiile votate, precum si actualele drep-
turi de votare pentru un top selectat.
4 Detalii de implementare
Aplicatia noastra are diverse functionalitati. Le voi prezenta modul de implemen-
tare si structurare.
4.1 Inregistrare
Deoarece am realizat o aplicatie care nu permite oricui sa voteze, am realizat un
modul de inregistrare, astfel incat numai persoanele care chiar sunt interesate de
aplicatie, sa aiba posibilitatea de a isi exprima preferintele.
Pentru aceasta, exista un o clasa Users in fisierul user.php care verifica daca datele
introduce sunt corecte si dupa care inregistreaza utilizatorul in baza de date, mai ex-
act, in tabela users.
public function register() {
$bd->connect();
if($this->password != $this->confirm){
return '<script> alert("Parola nu este
aceeasi!");</script>';//confirm
}else if($bd->next_record() == 0){
$bd->query("SELECT count(user_id)+1 as "next_id"
FROM users;");
while ($bd->next_record()) {
$next_id = $bd->Record["next_id"];
}
$bd->query("INSERT INTO users(user_id,username,password,
email)
VALUES('$next_id','$username','$password','$email');");
return 0;//succes
}else{
return 2;//user deja existent
}
4.2 Logare
Dupa ce s-a creat un cont, exista posibilitatea accesarii site-ului cu acel cont, iar
dupa logare, utilizatorul poate vota piesele favorite.Tot in clasa User exista si o func-
tie pentru controlul logarii.
public function userLogin() {
$success = false;
$bd->connect();
$bd->query("select * from users where username=
'$username' AND password= '$password';");
if ($bd->next_record()) {
$success = true;
$_SESSION['userLogat']=$username;
}
return $success;
}
4.3 Incarca topurile muzicale
La orice accesare a pagini principale, se face o cerere cu Ajax pentru a afisa
corespunzator toate topurile musicale existente in baza de date a serverului.
In fisierul functii.js exista mai multe functii pentru aceasta, controlul fiind preluat
de functia de mai jos:
function incarcaCategorii(exista) {
if (exista == 'o') {
incarcaMeniu('');//pune meniul corespunzator(nelogat)
trimiteIncarcaCategorii('incarca.php');//incarca
toate categoriile
} else if (exista == ''){
seteazaUtilizator('');//utilizator logat
incarcaMeniu('');//pune meniul corespunzator
trimiteIncarcaCategorii('incarca.php');//incarca
toate categoriile
}
else {
document.getElementById("topMusicbody").innerHTML=exista;
}
}
Fisierul incarca.php contine raspunsul HTML ce va fi incadrat in pagina prin-
cipala:
$bd->query("SELECT * FROM categorie ;");
while($bd->next_record()){
$id= $bd->Record["id_categorie"];
$nume= $bd->Record["nume_categorie"];
$desc= $bd->Record["descriere"];
$id2= $id+8000;
echo ' <div class='topMusic-categorie'' . 'id="' .
$id2 .'">';
echo '<div class='bullet-txt'>'.$nume.'</div>';
echo ' <div class='topMusic-txt'>'.$desc.'</div>';
echo '<div class='see-songs'' . 'id="' . $id . '"
onclick="javascript:seteazaCategorie(this.id, '')"><a
href="#toate-melodiile">Vezi melodii</a></div>';
echo ' </div>';
}
4.4 Afiseaza toate melodiile dintr-un anumit top
Atunci cand utilizatorul, logat sau nu, alege o categorie din partea stanga a ecran-
ului, i se vor aduce informatiile despre melodiile aflate pe server, pentru topul musical
selectat.
Functia din JavaScript:
function veziMelodii(exista){
if (exista != '') {
document.getElementById("songs-
body").innerHTML=exista;
document.getElementById("songs-
body").className = 'songs-body2';
} else {
incarcaMelodii ('melodii.php');
}
}
Fisierul melodii.php contine contine raspunsul HTML ce va fi incadrat in pagina
principala:
function melodii($id_categorie) {
//nu ezista user logat, deci nu i se va da
posibilitatea sa voteze
if($_SESSION['userLogat']==''){
while ($bd->next_record()){
echo '<div class="song" >'."n";
echo '<div class="song-info">PIESA : '.$nume.'</div>’ ;
echo '<div class="song-info">ARTIST:'.$artist.'</div>';
echo '<div class="song-info" id="' . $idVot . '">VOTURI
: '.$voturi.'</div>'."n";
echo '<div class='song-info'><a target="_blank"
href="' . $link . '"><img src="images/youtube.png"
/></a></div>';
echo '<div class="hr"><hr /></div>'."n";
echo '</div>'."n";
}
}else {//exista un user logat
$bd = new DataBase_MySQL ('fenrir.info.uaic.ro',
'Moosik', 'Moosik','9yD6wnJQOS');
$bd->connect();
$melodii=array();
$melodii=votat($id_categorie);
$lung=count($melodii);
if($lung==0){//nu a votat in aceasta categorie,
//ii apare butonul de vot
}
else{//a votat deja
//nu ii mai apare butonul de vot
//ii apare o iconita in dreptul melodiei votate
}
4.5 Votare
Cand utilizatorul apasa butonul de votare pentru o anumita categorie, se va apela
fisierul votare.php care face urmatoarele : retine top 10 (interogand baza de date),
adauga votul utilizatorului autentificat ( cauta id-ul melodiei votate in baza de date si
ii mareste numarul de voturi cu o unitate ), retine top 10 dupa adaugarea votului ,
determina, daca exista , melodia care a intrat in top sau melodia care a iese din top,
trimite mail tuturor utilizatorilor care au votat melodiile de la punctul preceden, actu-
alizeaza RSS.
Pentru a trimite mail am folosit :
for($j=0;$j<$lung2;$j++){
$email_from2 =
"proiect12345@gmail.com";
$email_to2 = $emails2[$j];
$email_subject2="Schimbare in
clasament!";
$email_message2 = "Buna ziua! Ati votat
pe site-ul nostru melodia '".$numeMelodie2."' cantata de
".$artist2."Va anuntam ca aceasta tocmai a intrat pe
locul 1 in Top 10 melodii ".$categorie2.".";
$headers2 = 'From:
'.$email_from2."rn".'Reply-To: '.$email_from2."rn"
.'X-Mailer: PHP/' . phpversion();
@mail($email_to2, $email_subject2,
$email_message2, $headers2);
}
Pentru actualizare RSS am folosit DOM, deoarece doream sa atasam noi itemi la fiec-
are modificare (urcare/coborare din top ).
4.6 Afiseaza primele 10 melodii dintr-un top selectat
Orice persoana are posibilitatea de a accesa un top a primelor 10 melodii dintr-o
categorie selectata. Functia JavaScript :
function veziTop(exista) {
if (exista != '') {
document.getElementById("songs-
body").innerHTML=exista;
} else {
trimiteTop ('top.php');
}
}
Fisierul top.php :
$melodii=array();
$melodii=votat($id_categorie);
$lung=count($melodii);
if($lung==0){//nu a votat sau nu are melodia in top
while ($bd->next_record()){
echo '<div class="song" >'."n";
echo '<div class="song-info">'.$it.'</div>'."n";
echo '<div class="song-info">PIESA :
'.$nume.'</div>'."n";
echo '<div class="song-info">ARTIST :
'.$artist.'</div>'."n";
echo '<div class="song-info">VOTURI :
'.$voturi.'</div>'."n";
echo '<div class="hr"><hr /></div>'."n";
echo '</div>'."n";
} }
else{
$melodieVotata=$melodii[0];
echo '<h2><a href="#toate-melodiile">TOP 10
</a></h2>';
while ($bd->next_record()){
//la fel ca mai sus, cu exceptia ca va aparea
melodia votata daca este in top
if($id==$melodieVotata){
echo '<div class='vote-btn' id="' . $id . '"
><img alt="" src="images/vote.jpg" /></div>';
}
4.7 Adauga o noua intrare in top
Utilizatorilor logati li se va pune la dispozitie un formular, in care vor trebui sa
completeze cu numele melodiei, artistul, anul aparitiei, un link Youtube catre melo-
die.Dupa completare, se va introduce o noua inregistrare in baza de date.
Pentru aceasta se folosesc: formularAdauga.php, formularAdauga.css, adau-
gaMelodie.php si o functie din functii.js numita veziAdaugaMelodie(‘’).
4.8 Vezi ultimile stiri
Daca se acceseaza butonul pentru RSS din pagina principala, se va putea citi fluxul
de date oferit la adresa
http://students.info.uaic.ro/~madalina.vatamanelu/Moosik/MoosikRSS.rss
Actualizarea acestui fisier are loc odata cu schimbarile din clasament,in fisierul
votare.php.
5 Concluzii
Aplicatia prezentata are ca scop managementul voturilor utizatorilor precum si o
actualizare continua a continutului in functie de numarul de voturi existente. Aplicatia
merge pentru categorii si melodii relative putine, ar trebui testate pentru un volum
mult mai mare de date.
6 Cuprins
1 Introducere.......................................................................................................1
2 Tehnologii utilizate..........................................................................................1
2.1 HTML.....................................................................................................2
2.2 CSS .........................................................................................................2
2.3 JavaScript................................................................................................3
2.4 PHP.........................................................................................................3
3 Arhitectura aplicatie ........................................................................................3
4 Detalii de implementare...................................................................................4
4.1 Inregistrare..............................................................................................4
4.2 Logare.....................................................................................................4
4.3 Incarca topurile muzicale........................................................................5
4.4 Afiseaza toate melodiile dintr-un anumit top..........................................6
4.5 Votare .....................................................................................................7
4.6 Afiseaza primele 10 melodii dintr-un top selectat ..................................8
4.7 Adauga o noua intrare in top...................................................................9
4.8 Vezi ultimile stiri ....................................................................................9
5 Concluzii..........................................................................................................9
6 Cuprins ............................................................................................................9
7 Bibliografie.................................................................................................... 10
7 Bibliografie
Buraga, D. S.-C. (2001). "Web Technologies". Bucharest: MATRIX ROM Publishing.
Buraga, D. S.-C. (2002). "Web Site Design". Iasi: Polirom Publishing House.
Buraga, D. S.-C. (2006). "XML Technolgies"(in Romanian). Iasi: Polirom Publishing
House.

More Related Content

Viewers also liked

Programmation pic 16F877
Programmation pic 16F877Programmation pic 16F877
Programmation pic 16F877Mouna Souissi
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)IJERD Editor
 
Joshua_Samuel_Williams_RHCE (3) (1)
Joshua_Samuel_Williams_RHCE (3) (1)Joshua_Samuel_Williams_RHCE (3) (1)
Joshua_Samuel_Williams_RHCE (3) (1)Joshua Samuel
 
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2Paarief Udin
 
Tugas powerpoint jannaturida xii ips 4
Tugas powerpoint jannaturida xii ips 4Tugas powerpoint jannaturida xii ips 4
Tugas powerpoint jannaturida xii ips 4Paarief Udin
 
SpinetiX DiVA Tech Specs
SpinetiX DiVA Tech SpecsSpinetiX DiVA Tech Specs
SpinetiX DiVA Tech SpecsPaul Van Dort
 
RESUME R.K.VERMA
RESUME R.K.VERMARESUME R.K.VERMA
RESUME R.K.VERMAravi verma
 

Viewers also liked (9)

Programmation pic 16F877
Programmation pic 16F877Programmation pic 16F877
Programmation pic 16F877
 
Requisitos
RequisitosRequisitos
Requisitos
 
International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)International Journal of Engineering Research and Development (IJERD)
International Journal of Engineering Research and Development (IJERD)
 
Joshua_Samuel_Williams_RHCE (3) (1)
Joshua_Samuel_Williams_RHCE (3) (1)Joshua_Samuel_Williams_RHCE (3) (1)
Joshua_Samuel_Williams_RHCE (3) (1)
 
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2
Tugas akhir tik angga susila putra & syarif hidayatullah xii ipa 2
 
Tugas powerpoint jannaturida xii ips 4
Tugas powerpoint jannaturida xii ips 4Tugas powerpoint jannaturida xii ips 4
Tugas powerpoint jannaturida xii ips 4
 
SpinetiX DiVA Tech Specs
SpinetiX DiVA Tech SpecsSpinetiX DiVA Tech Specs
SpinetiX DiVA Tech Specs
 
CV - Abusada Khaled
CV - Abusada KhaledCV - Abusada Khaled
CV - Abusada Khaled
 
RESUME R.K.VERMA
RESUME R.K.VERMARESUME R.K.VERMA
RESUME R.K.VERMA
 

Similar to Moosik

Similar to Moosik (20)

Culoarea cuvintelor
Culoarea cuvintelorCuloarea cuvintelor
Culoarea cuvintelor
 
Flori x
Flori xFlori x
Flori x
 
Licenta web aplicatie.pptx
Licenta web aplicatie.pptxLicenta web aplicatie.pptx
Licenta web aplicatie.pptx
 
Web todo
Web todo Web todo
Web todo
 
Civilizatia Egipteana
Civilizatia EgipteanaCivilizatia Egipteana
Civilizatia Egipteana
 
Prezentare site Coafor Virtual
Prezentare site Coafor VirtualPrezentare site Coafor Virtual
Prezentare site Coafor Virtual
 
Irina Cureraru
Irina CureraruIrina Cureraru
Irina Cureraru
 
Audi
AudiAudi
Audi
 
Proiect Programare Web
Proiect Programare WebProiect Programare Web
Proiect Programare Web
 
Documentatie Your Academic Tasks
Documentatie Your Academic TasksDocumentatie Your Academic Tasks
Documentatie Your Academic Tasks
 
Proiect programare web
Proiect programare webProiect programare web
Proiect programare web
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEB
 
Proiect Programare WEB
Proiect Programare WEBProiect Programare WEB
Proiect Programare WEB
 
Tema10 iliuta-stoica-ontologies-web-semantics
Tema10 iliuta-stoica-ontologies-web-semanticsTema10 iliuta-stoica-ontologies-web-semantics
Tema10 iliuta-stoica-ontologies-web-semantics
 
Proiect web
Proiect webProiect web
Proiect web
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Fii linked data
Fii linked dataFii linked data
Fii linked data
 
Galerie
GalerieGalerie
Galerie
 
Galerie
GalerieGalerie
Galerie
 

Moosik

  • 1. Moosik Neagu Gabriela,Vătămănelu Mădălina Facultatea de Informatica,Universitatea Alexandru Ioan Cuza,Iasi gabriela.neagu@students.info.uaic.ro madalina.vatamanelu@students.info.uaic.ro Abstract. Aplicatie Web pentru prezentarea comparativa a topurilor muzicale de diverse genuri. Utilizatorii vor putea vota melodiile preferate, reactualizarea efectuandu-se in mod dinamic. Atunci cand o melodie votata ajunge pe primul loc sau cand paraseste topul, utilizatorul respectiv va fi automat instiintat prin e- mail. Se pot propune noi intrari in top via o interfata Web, pe baza autentificarii utilizatorului. Diverse informatii referitoare la top (modificarea clasamentului) sunt facute disponibile via un flux de stiri RSS/Atom. Cuvinte-cheie: muzica,top,RSS,aplicatie Web 1 Introducere Muzica este arta prezenta in viata de zi cu zi a omului, exprimand trairile,ideile, sentimentele, evolutia, cultura unei personae. Muzica este arta combinării notelor în succesiune și simultan într-o formă plăcută estetic, organizarea ritmică a acestor note și integrarea lor într-o lucrare completă. Exista in momentul actual o multime de aplicatii Web care ofera posibilitatea de vizualizare a melodiilor dupa categorii, dar nu exista aplicatii care sa mentina istoricul voturilor. Am realizat aceasta aplicatie Web deoarece exista foarte multe genuri musicale, dar nu exista un loc in care poti accesa aceste melodii dupa anumite categorii si dupa un anumit numar de voturi.Astfel cei interesati trebuie sa se inregistreze, si astfel vor beneficia de o afisare personalizata a paginilor, in functie de intoricul tuturor voturilor sale 2 Tehnologii utilizate Pentru partea de client am ales:  HTML5 (HyperText Markup Language)- pentru structurarea și prezentarea conținutului paginilor  CSS3 (Cascading Style Sheets) - pentru formatarea elementelor unui document HTML
  • 2.  JavaScript – limbaj pentru introducerea unor funcționalități în paginile web, codul Javascript din fiind rulat de către browser.  AJAX poate fi utilizat in mai multe tipuri de aplicatii care pot fi incluse intr-o pagina web, dar cel mai folosit este pentru navigare de la un continut la altul al site-ului. Aceasta navigare se face de obicei prin link-uri, acestea contin o adresa URL catre pagina/continutul respectiv. Metoda standard de transmitere a datelor asresei URL din link-uri la server este GET. Pentru partea de server:  PHP (Php: Hypertext Preprocessor) - limbaj de programare pe partea de server folosit la dezvoltarea aplicatiilor Web  SESSION- reprezinta o modalitate prin care PHP retine informatii de la o pagina la alta. Odata cu initializarea unei sesiuni, utilizatorul poate pastra anumite variabile chiar daca in continuare viziteaza si alte pagini ale site- ului. In principiu informatia se pastreaza pana la inchiderea browser-ului, sau pana cand utilizatorul distruge in mod intentionat sesiunea curenta. Pentru memorarea datelor:  baza de date SQL pe serverul fenrir al facultatii ,care va memora toate datele necesare autentificarii utilizatorilor 2.1 HTML Acronimul de la HyperText Markup Language şi reprezintă un limbaj pentru crearea şi marcarea (formatare, aranjare) unui document astfel încât să poată fi publicat pe World Wide Web şi vizualizat cu ajutorul unui browser. Termenul de hypertext desemnează un material sub formă de text şi imagine, inter- conectat într-o manieră complexă, nesecvenţială, în care utilizatorul poate naviga, căuta informaţii referitoare la un obiect. Hypertext-ul trebuie interpretat ca un text care semnalează o legătură la o altă informaţie web, de obicei un alt document web, şi este identificat prin subliniere sau culoare, pentru a-l deosebi de textul simplu. Hypermedia este un termen aproape sinonim celui de hypertext, singura deosebire fiind faptul că subliniază prezenţa şi a unor elemente care nu sunt de tip text, cum ar fi animaţii, secvenţe sonore sau secvenţe video. HTML se utilizează din 1990, cu- noscând câteva versiuni de dezvoltare, fiecare dintre acestea îmbunătăţind perfor- manţele limbajului. Ultima variantă (la data elaborării acestui ghid) este HTML 5 ce include facilităţile versiunilor anterioare (tag-uri de marcare, tag-uri pentru hiperlegături, antete, paragrafe, liste, elemente de meniu, formatare caractere, imagini in-line şi tag-uri pentru schimbul de date dinamic între utilizatori), adăugând facilităţi şi extensii pentru numere, tabele şi elemente de control. 2.2 CSS Cascading Style Sheets (CSS) este un limbaj pentru stiluri folosit pentru a descrie prezentarea (aspectul si formatarea) unui document scris într-un limbaj de marcare.
  • 3. Aplicatia sa cea mai cunoscuta este realizarea stilului paginilor web scrise în HTML si XHTML, dar limbajul poate fi aplicat oricarui tip de document XML. CSS specifica o schema prioritara pentru a determina care reguli de stil se aplica daca doua sau mai multe reguli se suprapun pentru un element particular. În acest asa- numit cascade, prioritatile sau greutatea sunt determinate si atribuite regulilor, astfel încât rezultatele sunt predictibile. 2.3 JavaScript Javascript este un limbaj de programare care face posibil ca paginile web sa fie mai interactive. Scripturile Javascript sunt introduse in pagina HTML si sunt inter- pretate si executate de browser. Javascript poate fi considerat o unealta foarte buna daca doriti sa controlati continutul paginilor in functie de data, ora, sistemul de operare sau browserul utilizatorilor, sa faceti site-uri interactive, care sa comunice cu vizitatorii, site-uri dinamice, sa validati datele primite din formulare, dar nu numai atat, acestea fiind doar cateva din posibilitatile pe care le ofera acest limbaj. 2.4 PHP PHP este limbajul ideal pentru construirea de pagini web dinamice. Este usor de invatat, open-source, poate fi rulat pe mai multe platforme si se poate conecta la mai multe tipuri de baze de date. Cel mai important aspect al limbajului este insa posibili- tatea de a fi imbricat cu cod HTML. Putem astfel crea pagini HTML statice si din loc in loc, acolo unde este nevoie, sa introducem dinamism cu ajutorul PHP. In acest modul am stocat toate fisierele de tip .html si .php folosite la constuirea acestui sit Web. 3 Arhitectura aplicatie Aplicatia ofera o maniera usoara si simpla de vizualizare a topurilor musicale ex- istente pe server. Orice vizitator are oportunitatea de a naviga prin toate topurile ex- istente, de a afla informatii despre un top, precum descriere, lista tuturor melodiilor existente,top 10 a celor mai votate melodii si accesarea Rss-ul site-ului, ce contine ultimile intrari si iesiri din top. Pentru vizitatorii interesati de aplicatia anoastra,exista un modul de inregistrare,in care trebuie sa introduca cateva date de interes,precum username ,parola si email, dupa care exista un modul de login, in care se pot loga cu contul nou creat. Odata logati au mai multe optiuni, precum: voteaza(o singura data pentru un anumit top musical), primeste mail atunci cand o melodie votata ajunge pe primul loc,sau cand o melodie votata iese din top 10 si adauga o noua intrare in top. Aplicatia retine pentru fiecare utilizator melodiile votate, precum si actualele drep- turi de votare pentru un top selectat.
  • 4. 4 Detalii de implementare Aplicatia noastra are diverse functionalitati. Le voi prezenta modul de implemen- tare si structurare. 4.1 Inregistrare Deoarece am realizat o aplicatie care nu permite oricui sa voteze, am realizat un modul de inregistrare, astfel incat numai persoanele care chiar sunt interesate de aplicatie, sa aiba posibilitatea de a isi exprima preferintele. Pentru aceasta, exista un o clasa Users in fisierul user.php care verifica daca datele introduce sunt corecte si dupa care inregistreaza utilizatorul in baza de date, mai ex- act, in tabela users. public function register() { $bd->connect(); if($this->password != $this->confirm){ return '<script> alert("Parola nu este aceeasi!");</script>';//confirm }else if($bd->next_record() == 0){ $bd->query("SELECT count(user_id)+1 as "next_id" FROM users;"); while ($bd->next_record()) { $next_id = $bd->Record["next_id"]; } $bd->query("INSERT INTO users(user_id,username,password, email) VALUES('$next_id','$username','$password','$email');"); return 0;//succes }else{ return 2;//user deja existent } 4.2 Logare Dupa ce s-a creat un cont, exista posibilitatea accesarii site-ului cu acel cont, iar dupa logare, utilizatorul poate vota piesele favorite.Tot in clasa User exista si o func- tie pentru controlul logarii. public function userLogin() {
  • 5. $success = false; $bd->connect(); $bd->query("select * from users where username= '$username' AND password= '$password';"); if ($bd->next_record()) { $success = true; $_SESSION['userLogat']=$username; } return $success; } 4.3 Incarca topurile muzicale La orice accesare a pagini principale, se face o cerere cu Ajax pentru a afisa corespunzator toate topurile musicale existente in baza de date a serverului. In fisierul functii.js exista mai multe functii pentru aceasta, controlul fiind preluat de functia de mai jos: function incarcaCategorii(exista) { if (exista == 'o') { incarcaMeniu('');//pune meniul corespunzator(nelogat) trimiteIncarcaCategorii('incarca.php');//incarca toate categoriile } else if (exista == ''){ seteazaUtilizator('');//utilizator logat incarcaMeniu('');//pune meniul corespunzator trimiteIncarcaCategorii('incarca.php');//incarca toate categoriile } else { document.getElementById("topMusicbody").innerHTML=exista; } } Fisierul incarca.php contine raspunsul HTML ce va fi incadrat in pagina prin- cipala: $bd->query("SELECT * FROM categorie ;"); while($bd->next_record()){ $id= $bd->Record["id_categorie"]; $nume= $bd->Record["nume_categorie"]; $desc= $bd->Record["descriere"]; $id2= $id+8000;
  • 6. echo ' <div class='topMusic-categorie'' . 'id="' . $id2 .'">'; echo '<div class='bullet-txt'>'.$nume.'</div>'; echo ' <div class='topMusic-txt'>'.$desc.'</div>'; echo '<div class='see-songs'' . 'id="' . $id . '" onclick="javascript:seteazaCategorie(this.id, '')"><a href="#toate-melodiile">Vezi melodii</a></div>'; echo ' </div>'; } 4.4 Afiseaza toate melodiile dintr-un anumit top Atunci cand utilizatorul, logat sau nu, alege o categorie din partea stanga a ecran- ului, i se vor aduce informatiile despre melodiile aflate pe server, pentru topul musical selectat. Functia din JavaScript: function veziMelodii(exista){ if (exista != '') { document.getElementById("songs- body").innerHTML=exista; document.getElementById("songs- body").className = 'songs-body2'; } else { incarcaMelodii ('melodii.php'); } } Fisierul melodii.php contine contine raspunsul HTML ce va fi incadrat in pagina principala: function melodii($id_categorie) { //nu ezista user logat, deci nu i se va da posibilitatea sa voteze if($_SESSION['userLogat']==''){ while ($bd->next_record()){ echo '<div class="song" >'."n"; echo '<div class="song-info">PIESA : '.$nume.'</div>’ ; echo '<div class="song-info">ARTIST:'.$artist.'</div>'; echo '<div class="song-info" id="' . $idVot . '">VOTURI : '.$voturi.'</div>'."n"; echo '<div class='song-info'><a target="_blank" href="' . $link . '"><img src="images/youtube.png" /></a></div>'; echo '<div class="hr"><hr /></div>'."n";
  • 7. echo '</div>'."n"; } }else {//exista un user logat $bd = new DataBase_MySQL ('fenrir.info.uaic.ro', 'Moosik', 'Moosik','9yD6wnJQOS'); $bd->connect(); $melodii=array(); $melodii=votat($id_categorie); $lung=count($melodii); if($lung==0){//nu a votat in aceasta categorie, //ii apare butonul de vot } else{//a votat deja //nu ii mai apare butonul de vot //ii apare o iconita in dreptul melodiei votate } 4.5 Votare Cand utilizatorul apasa butonul de votare pentru o anumita categorie, se va apela fisierul votare.php care face urmatoarele : retine top 10 (interogand baza de date), adauga votul utilizatorului autentificat ( cauta id-ul melodiei votate in baza de date si ii mareste numarul de voturi cu o unitate ), retine top 10 dupa adaugarea votului , determina, daca exista , melodia care a intrat in top sau melodia care a iese din top, trimite mail tuturor utilizatorilor care au votat melodiile de la punctul preceden, actu- alizeaza RSS. Pentru a trimite mail am folosit : for($j=0;$j<$lung2;$j++){ $email_from2 = "proiect12345@gmail.com"; $email_to2 = $emails2[$j]; $email_subject2="Schimbare in clasament!"; $email_message2 = "Buna ziua! Ati votat pe site-ul nostru melodia '".$numeMelodie2."' cantata de ".$artist2."Va anuntam ca aceasta tocmai a intrat pe locul 1 in Top 10 melodii ".$categorie2.".";
  • 8. $headers2 = 'From: '.$email_from2."rn".'Reply-To: '.$email_from2."rn" .'X-Mailer: PHP/' . phpversion(); @mail($email_to2, $email_subject2, $email_message2, $headers2); } Pentru actualizare RSS am folosit DOM, deoarece doream sa atasam noi itemi la fiec- are modificare (urcare/coborare din top ). 4.6 Afiseaza primele 10 melodii dintr-un top selectat Orice persoana are posibilitatea de a accesa un top a primelor 10 melodii dintr-o categorie selectata. Functia JavaScript : function veziTop(exista) { if (exista != '') { document.getElementById("songs- body").innerHTML=exista; } else { trimiteTop ('top.php'); } } Fisierul top.php : $melodii=array(); $melodii=votat($id_categorie); $lung=count($melodii); if($lung==0){//nu a votat sau nu are melodia in top while ($bd->next_record()){ echo '<div class="song" >'."n"; echo '<div class="song-info">'.$it.'</div>'."n"; echo '<div class="song-info">PIESA : '.$nume.'</div>'."n"; echo '<div class="song-info">ARTIST : '.$artist.'</div>'."n"; echo '<div class="song-info">VOTURI : '.$voturi.'</div>'."n"; echo '<div class="hr"><hr /></div>'."n"; echo '</div>'."n"; } } else{ $melodieVotata=$melodii[0]; echo '<h2><a href="#toate-melodiile">TOP 10 </a></h2>'; while ($bd->next_record()){
  • 9. //la fel ca mai sus, cu exceptia ca va aparea melodia votata daca este in top if($id==$melodieVotata){ echo '<div class='vote-btn' id="' . $id . '" ><img alt="" src="images/vote.jpg" /></div>'; } 4.7 Adauga o noua intrare in top Utilizatorilor logati li se va pune la dispozitie un formular, in care vor trebui sa completeze cu numele melodiei, artistul, anul aparitiei, un link Youtube catre melo- die.Dupa completare, se va introduce o noua inregistrare in baza de date. Pentru aceasta se folosesc: formularAdauga.php, formularAdauga.css, adau- gaMelodie.php si o functie din functii.js numita veziAdaugaMelodie(‘’). 4.8 Vezi ultimile stiri Daca se acceseaza butonul pentru RSS din pagina principala, se va putea citi fluxul de date oferit la adresa http://students.info.uaic.ro/~madalina.vatamanelu/Moosik/MoosikRSS.rss Actualizarea acestui fisier are loc odata cu schimbarile din clasament,in fisierul votare.php. 5 Concluzii Aplicatia prezentata are ca scop managementul voturilor utizatorilor precum si o actualizare continua a continutului in functie de numarul de voturi existente. Aplicatia merge pentru categorii si melodii relative putine, ar trebui testate pentru un volum mult mai mare de date. 6 Cuprins 1 Introducere.......................................................................................................1 2 Tehnologii utilizate..........................................................................................1 2.1 HTML.....................................................................................................2 2.2 CSS .........................................................................................................2 2.3 JavaScript................................................................................................3 2.4 PHP.........................................................................................................3 3 Arhitectura aplicatie ........................................................................................3 4 Detalii de implementare...................................................................................4 4.1 Inregistrare..............................................................................................4 4.2 Logare.....................................................................................................4 4.3 Incarca topurile muzicale........................................................................5
  • 10. 4.4 Afiseaza toate melodiile dintr-un anumit top..........................................6 4.5 Votare .....................................................................................................7 4.6 Afiseaza primele 10 melodii dintr-un top selectat ..................................8 4.7 Adauga o noua intrare in top...................................................................9 4.8 Vezi ultimile stiri ....................................................................................9 5 Concluzii..........................................................................................................9 6 Cuprins ............................................................................................................9 7 Bibliografie.................................................................................................... 10 7 Bibliografie Buraga, D. S.-C. (2001). "Web Technologies". Bucharest: MATRIX ROM Publishing. Buraga, D. S.-C. (2002). "Web Site Design". Iasi: Polirom Publishing House. Buraga, D. S.-C. (2006). "XML Technolgies"(in Romanian). Iasi: Polirom Publishing House.