Download as pdf or txt
Download as pdf or txt
You are on page 1of 21

Aksesimi i bazes se te dhenave

MySQL nepermjet PHP-se


Arkitektura e nje baze te dhenash ne web

 Veprimi baze i nje web server-i tregohet ne figure. Sistemi perbehet


nga dy objekte: nje Web server dhe nje Web browser. Ndermjet tyre
kerkohet nje linje komunikimi: Nje web browser ben nje kerkese ne
web server dhe web server-i kthen pergjigjen.

 Kjo arkitekture perdoret per shperndarjen e faqeve statike. Ndersa


per web sitet me nje baze te dhenash, arkitektura eshte pak me
komplekse:
Arkitektura e nje baze te dhenash ne web

 Nje transaksion tipik i bazes se te dhenave web perbehet nga


etapat e meposhtme:
1. Web browser-i i nje perdoruesi dergon nje kerkese HTTP per nje
faqe web te caktuar.
 Psh: mund te beje nje kerkim per te gjithe librat ne bazen e te dhenave Book-
O-Rama te shkruar nga Laura Thomson, duke perdorur nje forme HTML.
Faqja e rezultateve te kerkimit quhet results.php
2. Web server-i merr kerkesen per results.php, merr skedarin dhe ia
dergon ate motorit te PHP-se per procesim.
Arkitektura e nje baze te dhenash ne web

3. Motori PHP fillon duke analizuar (parsing) skriptin. Brenda skriptit


eshte nje komande per t’u lidhur me bazen e te dhenave dhe per te
ekzekutuar nje query (kryen kerkimin per librat). PHP hap nje lidhje
me serverin MySQL dhe i dergon query-n e duhur.
4. Server-i MySQL e merr query-n e bazes se te dhenave dhe e
perpunon ate, dhe dergon rezultatet, nje liste librash, ne motorin e
PHP-se
5. Motori i PHP-se perfundon ekzekutimin e skriptit, i cili zakonisht
do te perfshije formatimin e rezultateve te query-se, ne menyre te
pershtatshme per HTML. Ai me pas i kthen rezultatet HTML ne
Web server.
6. Web Server-i e kalon HTML-ne ne browser, ku perdoruesi mund te
shohe listen e librave qe ka kerkuar.
Krijimi i nje lidhjeje me bazen e te dhenave

 Per t’u lidhur me serverin MySQL, perdorim kete rresht:

 Sintaksa e pergjithshme e ketij funksioni eshte:

 Ky funksion kthen nje identifikues link per ne bazen e te dhenave


MySQL, nese ka sukses, ose kthen false nese deshton. Kjo mund te
kontrollohet nepermjet kodit:
Krijimi i nje lidhjeje me bazen e te dhenave
 Nje funksion tjeter qe ben pothuajse te njejten gje si funksioni
mysql_pconnect eshte funksioni mysql_connect().
 Ndryshimi eshte se mysql_pconnect kthen nje lidhje te qendrueshme me bazen e
te dhenave.
 Nje lidhje normale me bazen e te dhenave do te mbyllet kur skripti e
perfundon ekzektutimin ose kur skripti therret funksionin
mysql_close().
 Nje lidhje e qendrueshme mbetet e hapur pasi perfundon ekzekutimi i
skriptit dhe nuk mund te mbyllet me funksionin mysql_close().
 Lind pyetja “Pse mund te na duhet kjo?”
 Lidhja me nje baze te dhenash kerkon njefare kohe. Kur thirret mysql_connect(),
perpara se te perpiqet te lidhet me bazen e te dhenave, ai do te kerkoje
automatikisht nese ka ndonje lidhje te qendrueshme qe eshte hapur qe me pare.
Nese po, ai do te perdore ate lidhje ne vend qe te hape nje lidhje tjeter. Kjo
kursen kohen dhe ngarkesen e serverit.
Zgjedhja e bazes se te dhenave qe do perdorim

 Ai do te perpiqet te perdore bazen e te dhenave te quajtur database.


Mund edhe te shtoni ne menyre opsionale, linkun e bazes se te
dhenave, mbi te cilin doni ta kryeni kete veprim (ne kete rast $db),
por nese nuk e specifikon kete, do te perdoret linku qe eshte hapur i
fundit. Nese nuk keni nje link te hapur, do te hapet linku default, sikur
te kishit thirrur mysql_connect().
Ndertimi i query-ve ne bazen e te dhenave

 Sintaksa e mysql_query eshte:

 Mund te perdorni edhe mysql_db_query, qe ka kete sintakse:

 Kjo eshte si nje kombinim i mysql_select_db() me mysql_query()

 Te dy keto funksione kthejne nje identifikues rezultati (qe na lejon qe te marrim


rezultatet e query-t) kur ka sukses dhe false ne te kundert. Kete identifikues duhet
ta ruajme ne nje variabel (si psh ne $result), ne menyre qe ta perdorim.
Marrja e rezultateve te query-t

 Ka nje bashkesi funksionesh per te copetuar rezultatet nga


identifikuesi i rezultatit ne menyra te ndryshme. Identifikuesi i
rezultatit eshte çelesi per te aksesuar zero, nje apo me shume rreshtat
qe kthehen nga query.
 Ne shembullin tone kemi perdorur dy prej tyre: mysql_numrows()
dhe mysql_fetch_array()
 mysql_numrows() na jep numrin e rreshtave qe kthehen nga query.
Duhet t’i kalojme si parameter identifikuesin e rezultatit :
$num_results = mysql_numrows($result);
Kjo na duhet, nese duam te shfaqim rezultatet:
for ($i=0; $i<$num_results; $i++)
{ // process results
}
Marrja e rezultateve te query-t
 Ne çdo iteracion te ketij cikli, therrasim mysql_fetch_array. Ky cikel
nuk do te ekzekutohet nese nuk kthehet asnje rresht.
 Ky funksion merr çdo rresht te bashkesise se rezultateve dhe e kthen
rreshtin si nje vektor te shoqeruar, ku çdo emer atributi(kolone)
sherben si çeles:

 Pasi marrim vektorin e shoqeruar $row, mund te kapim çdo fushe dhe
ta afishojme ate siç duhet:
Marrja e rezultateve te query-t
 Nese ne tekstin qe keni futur ne ndonje nga kutite e tekstit, ka
ndonje karakter te veçante si thonjezat teke apo dyshe, PHP-ja
do te vendose slash-e per t’i bere escape (per t’ia hequr
kuptimin e tyre te veçante).
 Ky opsion eshte i aktivizuar ne menyre default ne PHP. Ju mund
ta ç’aktivizoni ate duke modifikuar skedarin php.ini, por nese e
lini te aktivizuar, do jete me mire sepse nuk do te keni nevoje
te kujdeseni per raste te tilla te kontrollit nese te dhenat nuk
permbajne karaktere te veçanta.
 Funksioni stripslashes() do te fshije keto slash-e (/) qe mund
t’i jete shtuar automatikisht te dhenave tuaja nga PHP-ja.
Marrja e rezultateve te query-t
 Ka disa menyra per te marre rezultatet nga nje identifikues rezultati. Ne
vend te nje vektori te shoqeruar, mund t’i marrim rezultatet si nje vektor i
numeruar me ane te mysql_fetch_row():
$row = mysql_fetch_row($result);
 Vlerat e atributeve do te listohen ne secilen nga vlerat e vektorit $row[0],
$row[1], e keshtu me radhe.

 Secila nga menyrat e mesiperme kap çdo here nga nje rresht . Nje menyre
tjeter eshte qe te kapet çdo here nga nje fushe duke perdorur
mysql_result(). Per kete duhet te percaktohet numri i rreshtit (nga 0 deri ne
numrin e rreshtave -1), si dhe emri i fushes. Psh:
$row = mysql_result($result, $i, “title”);
 Mund te percaktoni emrin e fushes si nje string (ne formen “title” ose
“books.title”) ose si nje numer (si tek mysql_fetch_row()). Nuk duhet te
perzieni perdorimin e mysql_result() me ndonje funksion tjeter per marrjen
e informacioneve te rreshtave.
Shtimi i informacioneve te reja ne bazen e te
dhenave

 Shtimi i informacioenve te reja ne bazen e te dhenave eshte njelloj si marrja e


informacioneve prej saj. Duhet te ndiqen keto hapa: behet lidhja me db, dergohet nje
query dhe kontrollohet rezultati. Ne kete rast query do te jete INSERT e jo SELECT.

 Le te shohim nje shembull, per shtimin e nje libri te ri ne db


Shtimi i informacioneve te reja ne DB
Shtimi i informacioneve te reja ne DB
Shtimi i informacioneve te reja ne DB
Shtimi i informacioneve te reja ne DB
Nese skripti perfundon me sukses, pra realizohet shtimi i rreshtit te ri ne Db,
atehere do te afishote faqja e meposhtme
Shtimi i informacioneve te reja ne DB
Nje ndryshim i rendesishem ndermjet INSERT dhe SELECT eshte perdorimi i
mysql_affected_rows ():

Ne skriptin e meparshem perdorem mysql_num_rows() per te percaktuar se sa rreshta


Jane kthyer nga select. Kur shkruajme query qe e ndryshojne DB si INSERT, DELETE,
apo UPDATE, duhet te perdorim mysql_affected_rows().
Lirimi i Burimeve
 Nese keni probleme me memorien gjate ekzekutimit te
skriptit, mund t’ju duhet te perdorni mysql_free_result(), qe
ka sintakse si me poshte:

 Mund ta therrisni me nje identifikues rezultati, si vijon:

 Kjo ka efektin qe lirimit te memories se perdorur per te


ruajtur rezultatin. Natyrisht nuk duhet ta therrisni ate derisa
te keni mbaruar punen me nje bashkesi rezultatesh
(resultset)
Krijimi dhe fshirja e bazave te te dhenave

 Te dy keto funksione marrin si parametra nje emer databaze dhe nje


lidhje opsionale. Nese nuk jepet nje lidhje, do te perdoret ajo qe eshte
hapur e fundit. Ato do te perpiqen qe te krijojne dhe te fshijne
databazat e dhena. Te dy funksionet kthejne true nese kane sukses dhe
false ne te kundert.
<?php
function dbConn()
{
$db = mysql_connect("localhost","root","");
if (!$db)
{
echo "Nuk mund te lidhet me DB";
exit;
}
else
{
echo "Lidhja me DB u realizua me sukses<br>";
}
mysql_select_db("elearning");
}

function afishim()
{
$query = "select * from botime";
$result = mysql_query($query);

$num_results = mysql_numrows($result);
for ($i=0; $i<$num_results; $i++)
{
$row = mysql_fetch_array($result);
echo "Titulli: $row[titull], Pershkrimi: $row[pershkrim] ";
echo "<br>";
}
}

dbConn();
afishim();
?>

You might also like