Publikuar me : 22.01.2010 Kategoria : Manual PHP Lexuar : 141 here.
Ne pjesen e 6. do tiu tregojme disa detaje te metejshme ne lidhje me perdorimin dhe shfaqjen e te dhenave gjithashtu do te permendim edhe kontrollin e gabimeve te mundeshme gjate egzekutimit te nje skripti PHP apo nje thirrjeje MySQL.
Hyrje
Ne dy pjeset kaluese te ketij manuali ju treguam se si te merni te dhenat nga baza e te dhenave dhe si ti shfaqni ato ne ekran. Ne kete pjese do te japim edhe pjesen finale te ketij aspekti, duke zgjedhur vetem nje pjese nga te dhenat e ruajtura dhe duke bllokuar gabimet e mundeshme qe mund te hasen gjate veprimeve te shfaqjes.
Ndalimi dhe kontrolli i Gabimeve
Duke shfaqur te gjitha te dhenat nga baza e te dhenave eshte pothuajse e pamundur qe tabela apo baza e te dhenave te jete bosh, por supozojme qe ju do te punoni shpesh me te dhe do tiu ndodh qe te shtoni te dhena te reja, te modifikoni apo fshini, keshtuqe eshte gjithesesi e mundur qe nje thirrje apoo filtrim i caktuar te mos shfaq asnje rezultat ne ekran. Fatmiresisht me PHP dhe MySQL eshte shume e thjesht te kontrollosh kete lloj situate:
Kodi:
$num=mysql_numrows($result);
ku $result mban rezultatin e thirrjes ne bazen e te dhenave, p.sh ngarkimin e te gjitha ruajtjeve. Sic e shpjeguam edhe me pare, varibali $num do te mbaje numrin e ruajtjeve qe egzistojne ne tabelen tone dhe te cilin e perdorim per te ndertuar bllokun ri-perserites si ne Pjesen 4 te manualit. Prej kesaj, mund te bejme nje kontroll gabimi te mundshem duke perdorur komanden IF :
Kodi:
if ($num==0) { echo "Ne bazen e te dhenave nuk ka ende asnje ruajtje te mundeshme !"; } else { .... vazhdim i shfaqjes si ne pjesen 4 ... }
Kete pjese mund ta beni me te pershtatshme per vizitorin final, p.sh mund te shtoni nje link Shto Ruajtje etj.
Renditja e te dhenave
Jo vetem qe mund te shfaqni normalisht te dhenat e tabeles por nese deshironi mund ti rendisni ato sipas nje hapsire te caktuar, p.sh te dhenat te renditen sipas emrit ne rendin alfabetik. Si standarte, te dhenat tuaja do te shfaqen ne baze te numrit rendor ID duke u rritur +1. Por ju mund ti rendisni te dhenat sipas cdo hapsire te deshiruar.
P.sh, nje menyre e mire do te ishte te rendisni shfaqjen e informacioneve ne rendin alfabetik nga A deri tek ZH sipas mbiemrit te personit te regjistruar. Ja si do ta benim nje renditje te tille :
Kodi:
SELECT * FROM kontaktet ORDER BY last ASC
ASC (Ascending) perdoret per renditjen nga me i vogli tek me i madhi ndersa DESC (Descending) ben te kunderten, pra nga me i madhi tek me i vogli. Keshtu ne rastin tone alfabeti dhe shkronjat njihen nga A,a tek Z,z ne rendin ne rritje.
Me teper perdorime te mysql_numrows dhe te renditjes
Vlera qe varibli $num mban eshte shume e rendesishme per kontrollin e gabimeve dhe per krijimin e blloqeve perserites por ka edhe funksione te tjera. Nje shembull do te ishte edhe shfaqja e 5 ruajtjeve nga baza e te dhenave. Fillimisht te dhenat do te radhiteshin sipas numrit rendor ID ne rritje ose ne zbritje. Supozojme qe tani keni shfaqur ruajtjet ne rritje (ASC) por kjo nuk mjafton per te caktuar sasine e ruajtjeve qe do te shfaqen ne ekran. Keshtu, duhet ti caktojume scriptit tone te shfaqe 5 ne ekran dhe jo te gjitha ruajtjet qe gjenden ne tabelen tone.
Sigurisht, duhet te kontrollojme me pare nese sasia e ruajtjeve ne tabele eshte me e madhe se 5, sepse ndryshe supozojme qe ne tabele kemi 3 ruajtje dhe ne e bejme bllokun perserites per 5 here athere do te marim gabim. Kodi i meposhtem eshte i thjeshte dhe e realizon kete kontroll :
Kodi:
if ($num>5) { $to=5; }else{ $to=$num; }
$i=0; while ($i < $to) { ... vazhdimi i kodit ...
Ky kod do te kontrolloje nese ne bazen e te dhenave gjenden me shume se 5 ruajtje. Nese po blloku perserites do te egzekutohet 5 here.Nese jo do te perseritet aq here sa ruatje jane ne tabelen tone ($to=$num;).