Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Sql


Qdidactic » stiinta & tehnica » informatica » sql
Aplicatie site



Aplicatie site


APLICATIE SITE


1. DESCRIEREA SITE-ULUI


In cadrul acestei aplicatii prin combinarea a PHP MySQL s-a dorit realizarea unui site dinamic care da posibilitatea vizitatorilor sai sa-si gaseaca perechea potrivita. Site-ul reprezinta implementarea Web a unei agentii matrimoniale. Utilizatorii se pot inregistra, pentru a-si introduce mai multe date personale. Pot vizualiza informatiile celorlati membrii si cauta anumite persoane in functie de ccriteriil selectate.

Aplicatia implementeaza si unele functionalitati avansate, cum ar fi trimiterea automata de e-mail catre adresele specificate de utilizatori si incarcarea de fisiere pe server.


1.1. Structura site-ului




Pentru o mai buna organizare a aplicatiei fisierele au fost incluse, pe cat posibil, in directoare cu denumiri semnificative. Astfel, directorul images contine toate imaginile incluse in paginile site-ului, in directorul photos sunt stocate fotografiile membrilor inregistrati. Directorul templates contine fisierele .php folosite ca template pentru toate paginile din site, iar directorul styles contine fisierele .css (Cascading Style Sheet) folosite pentru realizarea layout-ului site-ului. In directorul functions sunt continute fisiere .php care vor fi incluse in alte fisiere si in ele sunt definite mai multe functii utile.

Paginile principale ale aplicatiei sunt urmatoarele: index.php, members.php, register.php, search.php, contact.php si about.php. Astfel, index.php reprezinta pagina home a site-ului, paginile contact.php si about.php contin informatii despre autorul aplicatiei si, respectiv, modul de contactare a acestuia. Pagina register.php contine un formular html pe care utilizatorii trebuie sa-l completeze pentru a se putea inregistra ca membrii ai site-ului. Daca formularul este completat corect si inregistrarea este realizata cu succes iar utilizatorului ii este prezentat un mesaj sugestiv si este trimis un e-mail catre adresa specificata de acesta, respectiv, daca inregistrarea esueaza, este afisat un mesaj de eroare corespunzator. Pagina members.php contine lista tuturor membrilor inregistrati, cu cateva informatii reprezentative pentru fiecare si cu legaturi catre paginile personale care contin informatii detaliate ale acestora. Pagina search.php cuprinde un formular html care permite cautarea in baza de date folosind mai multe criterii. Rezultatele cautarii sunt afisate in pagina search_results.php, avand acelasi layout ca si pagina member_details.php, pagina cu informatii detaliate despre fiecare membru.

1.2. Utilizarea template-urilor si a Style Sheet-urilor


Pentru pastrarea aceluiasi layout pentru toate paginile, ca si pentru a-l putea modifica sau inlocui cu usurinta, paginile au fost implementate pe baza unui fisier folosit ca template, caruia i-a fost atasat un fisier .css.

Fisierul template folosit pe care este structurat site-ul contine un tabel format din trei randuri ce indeplinesc rolurile de header, content si footer. Partea de header consta intr-un nou tabel, care la randul sau contine trei randuri, folosite pentru titlu, bara de meniu si bara de stare. Titlul va fi setat pentru fiecare pagina care implementeaza acest template. Bara de meniuri este realizata prin includerea fisierului menubar.php, iar bara de stare este implementata in fisierul statusbar.php. Partea de content va fi, de asemenea, setata separat pentru fiecare fisier al site-ului. Partea de footer implementata in fisierul footer.php contine informatii de tip Copyright.

Codul complet al fisierului template.php este prezentat in continuare:


<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>

<html>

<head>

<title>template</title>

<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>

<link href='styles(css)/style.css' rel='stylesheet' type='text/css'>

</head>


<body>

<table width='800' align='center'>

<tr>

<td>

<table width='100%' align='center'>

<tr>

<td align='center'>title</td>

</tr>

<tr>

<td><?php include 'menubar.php'; ?></td>

</tr>

<tr>

<td><?php include 'statusbar.php'; ?></td>

</tr>

</table>

</td>

</tr>

<tr>

<td align='center'>content</td>

</tr>

<tr>

<td>

<?php

include 'footer.php';

?>

</td>

</tr>

</table>


</body>

</html>

Fisierul .css contine declaratiile de stil pentru elementele HTML folosite in cadrul paginilor. Acestea pot fi cu usurinta modificate si, datorita faptului ca acest Style Sheet este aplicat tuturor paginilor, intregul layout al site-ului este modificat automat.


1.3. Crearea bazei de date MySQL


Pentru stocarea informatiilor despre membrii aplicatiei s-a folosit o baza de date MySQL. Aceasta este formata din patru tabele, si anume members, care contine informatiile despre membrii, languages, care contine o lista a limbilor pe care utilizatorii le pot selecta, spokenlanguages, care reprezinta legaturile dintre fiecare membru si limbile cunoscute de acesta si photos, care contine informatiile despre fotografiile mebrilor, maximum cinci fotografii pentru fiecare membru.

Structura tabelului members, cel mai complex dintre tabele bazei de date folosite, este descrisa in figura urmatoare, precum si tabelele languages, spokenlanguages si photos:




2. UTILIZAREA BAZELOR DE DATE MySQL


PHP include o biblioteca de functii care furnizeaza o interfata cu sistemul MySQL de gestiune a bazelor de date. Folosind aceste functii, un program PHP poate obtine accesul la datele rezidente intr-o baza de date MySQL si le poate modifica.

Majoritatea interactiunilor cu o baza de date se desfasoara dupa un model secvential simplu:

1.     Se deshide o conexiune cu serverul MySQL.

2.     Se specifica baza de date la care se va obtine accesul.

3.     Se emit interogari SQL, se obtine accesul la rezultatele interogarilor si se executa operatii non-SQL.

4.     Se inchide conexiunea cu serverul MySQL.


2.1. Conectarea la serverul MySQL


Pentru a se realiza conectarea la un server MySQL, se invoca functia mysql_connect(), a carei sintaxa este urmatoarea:

mysql_connect(nume_gazda, nume_utilizator, parola)

unde nume_gazda este numele gazdei pe care ruleaza serviciul MySQL, nume_utilizator este identificatorul de utilizator MySQL care va fi folosit, iar parola este parola MySQL asociata identificatorului de utilizator. Functia returneaza false in caz de esec, iar in caz contrar returneaza o valoare, denumita identificator de legatura, care serveste ca instrument de manipulare pentru accesul la serverul MySQL.

Se poate omite numele gazdei, identificatorul de utilizator si parola, sau toate cele trei argumente. Daca se procedeaza astfel, vor fi luate in considerare, in mod prestabilit, urmatoarele valori:

-numele gazdei: localhost

-identificatorul de utilizator: identificatorul de utilizator al procesului server MySQL

-parola: o parola vida


In realizarea acestui site, conectarea la serverul MySQL a fost posibila folosind functia connectdb(), implementata in fisierul connection.php, inclus in directorul functions, astfel :

<?php

function connectdb()

?>


2.2. Selectarea bazei de date


Dupa ce programul a obtinut o conexiune cu serverul MySQL, programul poate specifica baza de date la care va avea acces. Pentru aceasta, se invoca functia mysql_select_db(), care are urmatoarea forma

mysql_select_db(baza_de_date)

unde baza_de_date este un sir care contine numele bazei de date la care urmeaza a se obtine acces. Functia returneaza true daca poate obtine accesul la baza de date, respectiv false in caz contrar.


Selectarea bazei de date a fost implementata tot in functia connectdb() prezentata mai sus, astfel:

$db=mysql_select_db('adylic');


2.3. Detectarea aparitiei erorilor


Biblioteca MySQL din PHP furnizeaza doua functii de verificare a erorilor, si anume mysql_errno() si mysql_error(). Fiecare functie returneaza un rezultat care reflecta eroarea, daca exista, asociata celei mai recente operatii cu MySQL. Daca programul executa o secventa de operatii MySQL, iar prima operatie genereaza o eroare, informatiile despre erorile respective sunt pierdute in momentul initierii celei de a doua operatii.

Nici una din cele doua functii nu necesita argumente. Functia mysql_errno() returneaza un cod numeric de eroare, in timp ce functia mysql_error() returneaza o descriere textuala a erorii. Daca nu s-a produs nici o eroare, codul numeric al erorii este zero si descrierea are ca valoare un sir vid.

Informatiile de eroare sunt disponibile numai daca este activa o conexiune cu serverul MySQL, deci nu se poate folosi nici una dintre aceste functii pentru a raporta erorile asociate functiei mysql_connect().

Incluzand si mecanismul de detectare a erorilor, functia connectdb() arata astfel :


<?php

function connectdb()

?>


2.4. Eliminarea mesajelor de eroare


Numeroase functii PHP pot produce erori sau mesaje de avertizare, dar PHP furnizeaza functia error_reporting(), care permite eliminarea mesajelor nedorite. Functia are urmatoarea forma:

error_reporting (masca)

unde masca specifica tipul mesajelor care vor fi raportate. Daca se specifica zero ca valoare a atributului masca, nu va fi raportat nici un mesaj. Daca se specifica E_ALL ca valoare a atributului masca, vor fi raportate toate mesajele.


2.5. Inchiderea conexiunii cu serverul MySQL


Pentru a inchide o conexiune cu serverul MySQL se invoca functia mysql_close(). Functia returneaza true in caz de reusita; in caz contrar returneaza false. In general nu este necesara invocarea functiei mysql_close(), deoarece PHP inchide automat conexiunile deschise cu bazele de date atunci cand un script isi incheie executia.


2.6. Executarea interogarilor UPDATE, INSERT si DELETE


Din punctul de vedere al limbajului PHP, exista doua categorii de interogari SQL:

  • Interogarile SELECT, care returneaza randuri ale unui tabel.
  • Interogarile UPDATE, INSERT si DELETE, care nu returneaza randuri ale unui tabel.

Ambele categorii de interogari sunt emise folosind functia mysql_query(), dar verificarea si prelucrarea celor doua categorii de rezultate ale interogarilor sunt procese destul de diferite.


2.7. Functia mysql_query()


Functia mysql_query() executa o interogare specificata. Functia are urmatoarea forma:

mysql_query(interogare)

unde interogare este un sir care contine intergoarea care urmeaza a fi executata. Functia returneaza true daca serverul a reusit sa execute interogarea; in caz contrar, returneaza false.

2.8. Verificarea interogarilor care nu returneaza randuri de tabele


Pentru a verifica daca o interogare UPDATE, INSERT sau DELETE a avut efectul dorit, se poate folosi functia mysql_affected_rows(), care returneaza numarul randurilor afectate de interogarea cea mai recenta. Functtia are urmatoarea forma:

mysql_affected_rows()

In cazul in care cea mai recenta interogare UPDATE, INSERT sau DELETE a esuat, functia returneaza valoarea -1.


2.9. Utilizarea coloanelor de tabel cu auto-incrementare


Pentru a preciza ca MySQL va repartiza o valoare secventiala unica in coloana care serveste drept cheie primara a tabelului, se poate folosi indicatorul AUTO_INCREMENT.

Cand se insereaza un rind intr-un tabel se poate folosi functia mysql_insert_id() pentru a determina valoarea cheii primare atribuite de MySQL. Functia are forma:

mysql_insert_id()

si returneaza valoarea zero daca interogarea precedenta nu a generat o valoare AUTO_INCREMENT. Ca atare, functia trebuie apelata la putin timp dupa interogarea care a inserat randul din tabel, astfel incat o interogare ulterioara sa nu modifice rezultatul.


2.10. Prelucrarea rezultatelor interogarilor SELECT


Spre deosebire de interogarile UPDATE, INSERT si DELETE, interogarile SELECT returneaza randuri de tabel ca rezultate. Randurile unui tabel sunt incluse intr-o structura de date numita set de rezultate. Prelucrarea setului de rezultate returnat de o interogare SELECT implica parcurgerea prin iteratie a randurilor setului de rezultate.

O modalitate de parcurgere iterativa a randurilor unui set de rezultate consta in obtinerea numarului de randuri, urmata de deplasarea prin iteratie, folosind numarul de randuri ca limita pentru o instructiune for. Pentru a obtine valoarea numarului de randuri, se invoca functia mysql_rows(), transferand ca argument valoarea returnata de functia mysql_query().

Functia mysql_fetch_row() se poate folosi pentru a obtine urmatorul rand din secventa setului de rezultate. Totusi, functia mysql_fetch_row() returneaza true daca un set de rezultate contine randuri neprelucrate, respectiv false in caz contrar. Ca atare, in general este preferabil sa se omita apelarea functiei mysql_num_rows() si sa sa se foloseasca in schimb o instructiune while.

Valoarea returnata de functia mysql_fetch_row() reprezinta un tablou alcatuit din toate coloanele randului curent din tabel. Tabloul foloseste indexuri intregi, unde valoarea primului index este egala cu zero. Pentru a prelucra coloanele stocate in tablou, se foloseste o instructiune foreach, care elimina necesitatea existentei unui index explicit al buclei.

Daca se doreste obtinerea accesului la valoarea unei anumite coloane, se poate face referire la elementul din tablou folosind un index. De exemplu, daca rezultatul functiei mysql_fetch_row() este stocat in variabila $rind, se poate obtine acces la prima coloana din setul de rezultate folosind sintaxa $rind[0], la a doua coloana folosind sintaxa $rind[1], etc.

Pentru a obtine randurile tabelului se paote folosi mysql_fetch_array(), care returneaza un tablou asociati Valorile indecsilor din tablou le reprezinta numele coloanelor din setul de rezultate. Ca si functia mysql_fetch_row(), functia mysql_fetch_array() returneaza false daca nu mai exista randuri in setul de rezultate.


2.11. Lucrul cu seturi de rezultate


Biblioteca de functii MySQL a limbajului PHP include un set de functii prin care se pot obtine informatii despre un set de rezultate, inclusiv:

  • Numarul coloanelor din setul de rezultate.
  • Numarul fiecarei coloane.
  • Lungimea fiecarei coloane.
  • Indicatorii MySQL asociati coloanei.
  • Tipul MySQL al fiecarei coloane.
  • Numele tabelului MySQL care contine coloana, daca este cazul.

De asemenea, biblioteca furnizeaza o functie care permite obtinerea accesului in mod non-secvential la randurile din setul de rezultate, prin specificarea numarului unui rand.


2.12. Obtinerea numarului coloanelor unui set de rezultate


Pentru a obtine numarul coloanelor dintr-un set de rezultate se invoca functia mysql_num_fields(), transferand ca argument valoarea returnata de functia mysql_query().



2.13. Obtinerea numelui unei coloane din setul de rezultate


Functia mysql_field_name() returneaza numele coloanei din setul de rezultate avand valoarea indexului data ca argument al functiei. Indexul asociat cu prima coloana este 0, indexul asociat celei de a doua coloane este 1, etc.


2.14. Obtinerea lungimii unei coloane dintr-un set de rezultate


Functia mysql_field_len() returneaza lungimea maxima a coloanei dintr-un set de rezultate, avand valoarea indexului data ca argument al functiei. Indexul asociat primei coloane este 0, indexul asociat celei de a doua coloane este 1 etc.


2.15. Obtinerea indicatorilor MySQL asociati unei coloane

a setului de rezultate


Functia mysql_field_flags() returneaza indicatorii SQL asociati colaonei din setul de rezultate al carei index este dat ca argument al functiei. Indexul asociat primei coloane este 0, indexul asociat celei de a doua coloane este 1, etc. Functia mysql_field_flags() raporteaza urmatorii indicatori :

AUTO_INCREMENT

BINARY

BLOB

ENUM

MULTIPLE_KEY

NOT_NULL

PRIMARY_KEY

TIMESTAMP

UNIQUE_KEY

UNSIGNED

ZEROFILL

Daca la o coloana sunt asociati mai multi indicatori, fiecare indicator este separat de vecinii sai prin intermediul unui singur spatiu.


2.16. Obtinerea tipului MySQL al unei coloane din setul de rezultate


Functia mysql_field_type() returneaza tipul MySQL al unei coloane al carei index este dat ca argument al functiei. Indexul asociat primei coloane este 0, indexul asociat celei de a doua coloane este 1, etc.

2.17. Determinarea tabelului MySQL asociat unei coloane

din setul de rezultate


Functia mysql_field_table() returneaza tabelul MySQL, daca exista, asociat coloanei din setul de rezultate al carei index este dat de argumentul functiei. Indexul asociat primei coloane este 0, indexul asociat celei de a doua coloane este 1, etc. In cazul in care coloana contine o valoare calculata sau daca respectiva coloana nu este asociata in alt mod cu un tabel MySQL, functia returneaza un sir vid.


2.18. Obtinerea structurii complete a setului de rezultate


Functia mysql_fetch_field() returneaza un obiect ale carui proprietati contin o varietate de informatii cu privire la coloana unui set de rezultate. Proprietatiile sunt urmatoarele:

blob – are valorea 1 in cazul in care coloana este de tip BLOB

max_length – lungimea maxima a coloanei;

multiple_key – are valoarea 1 in cazul in care coloana este o cheie non-unica

name – numele coloanei

not_null – are valoarea 1 in cazul in care coloana nu poate contine valoarea NULL

numeric – are valoarea 1 in cazul in care coloana este numerica

primary_key – are valoarea 1 in cazul in care coloana este o cheie primara

table – numele tabelului MySQL caruia ii apartine coloana

type – tipul MySQL al coloanei

unique_key – are valoarea 1 in cazul in care coloana este o cheie unica

unsigned – are valoarea 1 in cazul in care coloana este de tip UNSIGNED

zerofill – are valoarea 1 in cazul in care coloana este completata cu zerouri


Functia mysql_fetch_field() preia doua argumente: valoarea returnata de functia mysql_query() si indexul coloanei din setul de rezultate care va fi descris. Ca de obicei, indexul asociat primei coloane este 0, indexul asociat celei de a doua coloane este 1, etc.



2.19. Accesul non-secvential la coloanele unui set de rezultate


Functiile mysql_fetch_row() si mysql_fetch_array() returneaza, in general randurile dintr-un set de rezultate in mod secvential. Totusi, functia mysql_data_seek() permite obtinerea accesului la randurile unui set de rezultate intr-o maniera non-secventiala. Functia are forma :

mysql_data_seek(rezultat, numar_rind)

unde rezultat este valoarea returnata de functia mysql_query(), iar numar_rind este indexul randului la care doriti sa obtineti accesul. Primul rand al setului de rezultate este numerotat cu 1, al doilea cu 2 etc. Functia returneaza true daca executia reuseste, respectiv false in caz contrar. O invocare ulterioara a functiei mysql_fetch_row() sau a functiei mysql_fetch_array() va returna randul din pozitia specificata a setului de rezultate.


3. IMPLEMENTAREA FUNCTIONALITATILOR PRINCIPALE


3.1. Inregistrarea noilor membri


Pentru inregistrarea unui nou membru in baza de date a aplicatiei, utilizatorul trebuie sa completeze formularul din pagina register.php. Acesta sunt cuprinde toate campurile din tabelul members al bazei de date, precum si o lista cu toate inregistrarile din tabelul languages, pentru ca utilizatorul sa poata selecta limbile cunoscute. Toate campurile sunt obligatorii, unele au furnizate valori implicite, iar pentru cele care necesita indeplinirea anumitor conditii pentru a putea fi valide a fost realizata o functie JavaScript. Aceasta realizeaza validarea datelor introduse in formular inainte ca cererea sa fie trimisa spre procesare serverului.

Campurile de tip select din formular trebuie sa aiba valori care sunt obtinute din valorile posibile ale anumitor coloane de tip enum din baza de date, iar acestea sunt obtinute prin apelarea functiei showenumvalues($col , definita in fisierul showenumvalues.php, inclus in directorul functions, functie care este implementata astfel:

<?php

function showenumvalues($col)'';

$result=mysql_query($query);

if(mysql_num_rows($result)>0)

foreach($options as $val)

}

?>

Aceasta functie este apelata in fisierul register.php pentru diferite valori ale parametrului $col, de exemplu:

<?php showenumvalues('haircolor'); ?>

Daca datele au fost completate corect, formularul este trimis spre procesare. De acest lucru se ocupa fisierul register_action.php. Se incearca inserarea elementelor din formular folosind o interogare de tip insert si prin apelul functiei mysql_query. Daca inserarea esueaza este afisat un mesaj de eroare si utilizatorului ii este oferita posibilitatea de a se intoarce in pagina cu formularul de inregistrare. Daca inregistrarea are loc cu succes, in continuare se introduc in tabelul languages limbile specificate de utilizator, este trimis un e-mail informativ catre adresa specificata de acesta si i se ofera posibilitatea de a trece intr-o noua pagina in care isi poate upload-a pana la maximum cinci fotografii personale. Tot acum este creat pe server un director al carui nume este format din stringul “member_” concatenat cu id-ul noului membru introdus in baza de date, director ce va fi folosit pentru stocarea fotografiilor membrului respecti

Pentru a nu permite executia interogarilor din pagina register_action.php in cazul in care aceasta ar fi introdusa direct in bara de adresa a browser-ului, intreg codul este cuprins intr-o instructiune if in care se verifica daca a fost apasat butonul sumbit din formularul de inregistrare astfel:

if(isset($_POST['submit']))


Pentru introducerea datelor din formular in baza de date, acestea sunt retinute in prealabil in variabile php corespunzatore:

$haircolor=$_POST['haircolor'];

$eyescolor=$_POST['eyescolor'];

$smoker=$_POST['smoker'];

$maritalstatus=$_POST['maritalstatus'];

$kids=$_POST['kids'];

$kidslivingwith=$_POST['kidslivingwith'];

$religion=$_POST['religion'];

$education=$_POST['education'];

$occupation=$_POST['occupation'];

$income=$_POST['income'];

$city=$_POST['city'];

$state=$_POST['state'];

$country=$_POST['country'];

$hobby=$_POST['hobby'];

$personaldescription=$_POST['personaldescription'];

$relationship=$_POST['relationship'];

$person=$_POST['person'];

apoi are loc crearea string-ului care va fi folosit in functia mysql_query:


$insert='INSERT INTO members(name, gender, email, password, birthdate, precisedate, birthplace, height, weight, haircolor, eyescolor, smoker, maritalstatus, kids, kidslivingwith, religion, education, occupation, income, city, state, country, hobby, presentation, relationship, person) VALUES (''.

$name.'', ''.$gender.'', ''.$email.'', ''.$password.'', ''.

$birthdate.'', ''.$precisedate.'', ''.$birthplace.'', '.

$height.', '.$weight.', ''.$haircolor.'', ''. $eyescolor.'', ''.$smoker.'', ''.$maritalstatus.'', '.

$kids.', '.$kidslivingwith.', ''.$religion.'', ''. $education.'', ''.$occupation.'', '.$income.', ''. $city.'', ''.$state.'', ''.$country.'', ''.$hobby.'', ''.

$personaldescription.'', ''.$relationship.'', ''. $person.'')';


si se continua cu executia interogarii si a celorlalti pasi necesari, in functie de rezulatul acesteia:


$result=mysql_query($insert);

if(mysql_affected_rows()!=1)

else                      

}

chdir('photos');

$dir = 'member_'.$newid;

mkdir($dir);

$message='<center>Congratulations! You have been succesfully registered!</center><br>'.

'<center>You can upload up to <b>5</b> photos <a href='upload.php?id='.$newid.''>here</a></center><br><br>';

mailto($email,$password);



Pentru realizarea trimiterii automate de e-mail a fost realizata functia mailto($to, $pass), implementata in fisierul mail.php din directorul functions. Aceasta functie primeste ca parametrii adresa de e-mail a noului membru inregistrat si parola introdusa de acesta si trimite la acea adresa un e-mail informativ, folosind functia PHP mail, astfel:

<?php

function mailto($to,$pass)

?>


3.2. Cautarea membrilor


Pentru cautarea in baza de date a fost creat pagina search.php care contine un formular in care utilizatorul poate specifica creiteriile de cautare. Aplicatia permite cautarea membrilor folosind orice combinatie a urmatoarelor coloane din tabelul members: name, gender, height, weight, haircolor, eyescolor, maritalstatus, smoker, country.

Dupa introducerea informatiilor dorite pentru cautare, formularul este trimis spre procesare catre pagina search_result.php. Aceasta include fisierul find.php, din directorul functions, in care este definita functia find(). Aceasta primeste ca parametrii toate variabilele din formularul de cautare si, an fuctie de valorile acestora, formeaza stringul care va fi folosit in interogare, astfel:


<?php

function find($name, $gender, $height, $weight, $haircolor, $eyescolor, $maritalstatus, $smoker, $country)

?>


In pagina search_results are loc apelul metodei find folosind datele introduse in formular si se executa interogarea respectiva. Rezultatele cautarii sunt prezentate intr-un tabel, cate o inregistrare pe fiecare linie, cuprinzand cateva detalii pentru fiecare membru gasit, si cu lkegaturi catre paginile cu detalii despre fiecare.


<?php

$findresults=find($_POST['name'], $_POST['gender'], $_POST['height'], $_POST['weight'], $_POST['haircolor'], $_POST['eyescolor'], $_POST['maritalstatus'], $_POST['smoker'], $_POST['country']);

$result=mysql_query($findresults);

echo '<table><tr><td>Name</td> <td>Gender</td> <td>Height</td> <td>Weight</td> <td>Haircolor</td>'.

'<td>Eyescolor</td> <td>Marital Status</td> <td>Smoker</td> <td>Country</td>';

while($row=mysql_fetch_array($result))?>

</table>


3.3. Afisarea mebrilor


Pentru afisarea tuturor membrilor inregistrati in baza de date exista doua legaturi specificate in fisierul menubar.php, respectiv pentru Men si Women. Ambele legaturi indica, insa, catre aceeasi pagina, si anume members.php, dar care primeste diferite valori pentru atributul detip URL gender. Astfel, pentru Men legatura se face catre pagina members.php?gender=male, si respectiv, pentru Women, legatura este catre members.php?gender=female

In pagina members.php, construita pe baza templeate-ului, informatiile sunt prezentate sub forma unui tabel care contine pe fiecare linie cateva infoormatii semnificative pentru fiecare membru si legatura catre pagina detaliata a acestuia. Inainte de afisarea informatiilor are loc o verificare a valorii parametrului gender din URL si se formeaza astfel interogarea corespunzatoare:

<table>

<tr>

<td>Name</td>

<td>Gender</td>

<td>Height</td>

<td>Weight</td>

<td>Haircolor</td>

<td>Eyescolor</td>

<td>Marital status</td>

<td>Smoker</td>

<td>Country</td>

</tr>

<?php

if(isset($_GET['gender']))

}

?>

</table>


3.4. Upload-ul fisierelor


Dupa ce s-a inregistrat, unui membru i se da posibilitatea de a incarca pe server maximum cinci fotografii personale. Acest lucru este implementat in fisierul upload.php. Acest fisier are ca parametru de tip URL id-ul noului membru inregistrat, pentru a putea determina in care subdirector din directorul photos sa salveze fotografiile. Pagina upload.php costa intr-un formular HTML cu cinci elemente input de tip file. Pagina de actiune a acestui formular este setata ca fiind tot upload.php. La accesarea paginii are loc o verificare daca a fost apasat butonul de Submit, adica daca au fost selectate fisierele pentru upload. In caz afirmativ, se incearca upload-ul fisierelor pe server si, in acelasi timp, are loc si trecerea informatiilor corespunzatoare in baza de date. La final, este setata o variabila php numita $succes, a carei valoare va fi afisata opentru a furniza utilizatorului informatii referitoare la succesul sau esecul upload-ului. Mecanismul de upload este implementat astfel:


<?php

$id=$_GET['id'];

if(isset($_POST['submit']))

}

}

}

?>


3.5. Managementul sesiunilor de lucru


Pentru managementul utizatorilor care logati pe site, PHP ofera mecanismul variablelor din scope-ul $_SESSION. Pagina login.php realizeaza logarea unui utilizator. Intr-un formular HTML acesta trebuie sa introduca adresa de e-mail si parola pe care a ales-o in momentul crearii contului. Acest formular este trimis spre prelucrare tot catre pagina login.php. La inceputul fisierului are loc o verificare daca a fost apasat butonul de login si in caz afirmativ se preiau informatiile introduse in formular si se verifica daca acestea corespund uneia si numai uneia dintre inregistrarile din tabelul members. Daca este gasita o asemenea inregistrare, sunt setate variabilele username si userid din scopul $_SESSION si fisierul statusbar.php isi modifica continutul pentru a afisa faptul ca utilizatorul a fost recunoscut si logat in sistem:

<?php

if(isset($_POST['submit']))

else

}

?>


In caz contrar, este setata o variabila php numita $error si este afisat un mesaj de eroare, iar utilizatorul poate incerca din nou.

Fisierul statusbar.php este cel care realizeaza afisarea, sub bara de meniu a informatiilor legate de starea utilizatorului. Dupa ce utilizatorul este recunoscut ii este afisat un link prin care poate accesa pagina logout.php, prin care se poate deconecta, iar daca nici un utilizator nu este conectat, este afisata o legatura catre pagina login.php.


<table width='800'>

<tr>

<td align='left'>

<?php

if(isset($_SESSION['username']) && isset($_SESSION['userid']))

echo 'Welcome, '.$_SESSION['username'].'!';

else echo 'Welcome, Visitor!';

?></td>

<td align='right'>

<?php

if(isset($_SESSION['username']) && isset($_SESSION['userid']))

echo '<a href='logout.php'>Logout</a>';

else echo '<a href='login.php'>Login</a>';

?></td>

</tr>

</table>


Toate paginile folosite pentru navigare in cadrul site-ului trebuie sa apeleze functia session_start(). Aceasta permite determinarea starii utilizatorului: conectat sau neconectat. Anumite pagini ale site-ului permit accesul numai pentru utilizatorii conectati. Pentru aceasta, respectivele pagini trebuie sa realizeze o verificare a variabilelor din scope-ul $_SESSION, iar in cazul in care utilizatorul nu este conectat, este redirectat catre pagina login.php, astfel:

session_start();

if(         !isset($_SESSION['username'])|| isset($_SESSION['userid']) )


Pagina logout.php realizeaza distrugerea variabilelor din scope-ul $_SESSION, si redirectarea catre pagina de start a site-ului, index.php, astfel:

<?php

session_start();

if( isset($_SESSION['username']) && isset($_SESSION['userid']) )

?> CONCLUZIE


Primul element al www (world wide web) este HTML (HyperText Markup Language), care descrie formatul documentelor distribuite pe web. W3C (world wide web Consortium) a enuntat cateva versiuni a limbajul HTML, HTML 2.0, HTML 3.0, HTML 3.2, HTML 4.0, si mai recent HTML 4.01, dar unii autori de browsere au dezvoltat propriile extensii HTML.

Din aceasta cauza incarcarea unui document HTML intr-un browser, afisarea textului si a imaginilor poate diferi de la un tip de browser la altul.

Dinamicitatea unei pagini web este data de catre un limbaj de programare, in cazul paginilor web cel mai utilizat limbaj este PHP (Hypertext Preprocessor), cu ajutorul caruia paginile unui sit se pot modifica de catre clientii nostri fara ca acestia sa fie nevoiti sa aiba cunostinte tehnice in HTML sau PHP, totul se poate modifica simplu cu ajutorul unui Panou de Administrator, prin care clientul isi poate modifica pagina dorita.

Limbajul de programare PHP reprezinta punctul de legatura dintre pagina web propriu-zisa si baza de date, baza de date reprezentand punctul sau locul de stocare a datelor, care la randul ei confera sitului o crestere a dinamicitatii acestuia.

Combinand limbajul de programare interactiv cu limbajul HTML devine posibila si introducerea informatiilor in baza de date al sitului nostru.

Pentru procesarea datelor in baza de date, cel mai folosit sistem in cadrul aplicatiilor web este MySQL, adica un SGBD (Sistem de Gestiune a Bazelor de Date) open-source, bazat pe SQL (Structured Query Language), limbaj pentru accesarea si manipularea bazelor de date. MySQL pune la dispozitie API-uri (Application Programming Interface) pentru limbajele C, C++, Java, Perl, PHP si Python.

Folosirea corecta a limbajelor de programare, a HTML, precum si a sistemului MySQL sunt foarte importante pentru obtinerea unei functionalitati perfecte a sitului, precum si pentru afisarea corecta a datelor in cel mai rapid timp posibil.



BIBLIOGRAFIE


1.     Luke Welling, Laura Thomson, Dezvoltarea aplicatiilor WEB cu PHP si MySQL, Editura Teora, 2005

2.     Cristian Darie, Mihai Bucica, PHP 5 si MySQL pentru comert electronic, Editura Teora, 2006

3.     Paul DuBois, MySQL, Editura Teora, 2004

4.     Laura Thomson, Dezvoltarea aplicatiilor WEB cu PHP si MySQL, Editura Teora, 2004

5.     Traian Anghel, Dezvoltarea aplicatiilor WEB folosind XHTML, PHP si MySQL, Editura Polirom, 2005

6.     Julie C. Meloni, Invata singur PHP, MySQL SI APACHE, Editura Corint, 2005

7.     Larry Ullman, PHP si MySQL pentru site-urile WEB dinamice, EdituraTeora, 2006

8.     http://www.etutoriale.ro/articles/21/1/Variabile-in-php





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright