Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Paano I-paginate ang mga Datos Gamit ang PHP

by
Difficulty:IntermediateLength:LongLanguages:

Tagalog (Wikang Tagalog) translation by Robert Alexander (you can also view the original English article)

Naaalala ko ang mga lumipas na taon noong sinimulan ko mag-coding sa PHP at MySQL, at kung gaano ako nagalak noong unang beses kong nakuha ang mga datos mula sa database upang lumabas ang mga ito sa isang web browser.

Para sa isang taong kaunti lang ang kaalaman sa database at programming, sa pagtanaw ko ng mga talahanayan na lumabas sa screen base sa code na aking isinulat (kinopya ko lang naman ang halimbawa mula sa isang libro -- ‘wag na natin itong pagtalunan), nasiyahan ako na tila ako’y nagwagi. Hindi ko man naintindihan nang buong-buo ang lahat ng madyik sa trabaho dati, ang unang tagumpay kong iyon naman ang nag-udyok sa aking gumawa pa ng mga mas malalaki at mas magagandang proyekto.

Kahit hindi na ganoong kaparehas ang kagalakan ko sa mga database gaya ng dati,
magmula sa aking ‘hello world’ na pagtatagpo sa PHP at MySQL, nawili na ako sa
kapangyarihan ng pagpapasimple at pagpapadali ng mga bagay.

Bilang isang developer, ang isang problemang aking madalas na hinaharap ay ang paglikom ng napakaraming impormasyon, at gawin itong madaling intindihin. Maging listahan ng mga kliyente ng isang malaking kumpanya man iyan o isang simpleng personal na mp3 katalog, ang pag-upo at pagtanaw sa hanay mula sa hanay mula sa hanay ng mga datos ay maaaring nakapanghihina ng loob
at nakakabigo. Anong magagawa ng isang magaling na developer? I-paginate!


1. Ang pagination

Ang pagination ay mahalagang proseso sa pagkuha ng isang grupo ng mga resulta at pagakalat
ng mga ito sa mga pahina upang mas madali itong tignan.

example 1

Nalaman ko agad na kung may ipakikitang 5000 hanay ng impormasyon, hindi lamang
sakit sa ulo para subukin at basahin ito ng isang tao, ngunit magtatagal din nang
kawalang-hangganan ng Internet (i.e. higit pa sa limang segundo) ang karamihan ng mga browsers para lang ipakita ito.

Para masolusyonan ito, magcocode ako ng iba’t ibang mga SQL na pahayag upang makuha ang mga tipak na impormasyon, at kung
maganda ang ihip ng hangin, baka maglagay pa ako ng ilang mga “next” at “previous” na mga pindutan.
Ilang sandali lang, ang paglagay ng code na ito sa bawat magkatulad na proyekto at i-customize
ang mga ito para umangkop ay tila naging luma na. Gano’n kabilis. At alam ng bawat magaling na developer, ang katamaran ay nagbubunga ng pagkamalikhain
o anumang katulad nito. Kaya isang araw, umupo ako at nagdesisyong mag-isip ng simple,
na bagay sa iba’t ibang sitwasyon, at madaling gamiting klase ng PHP na awtomatikong gagawa ng trabaho para sa
akin.

Isang salita tungkol sa akin at mga PHP class. Hindi ako isang object-oriented na henyo. Sa totoo lang, hindi ako masyado
gumagamit ng mga bagay na iyon. Ngunit matapos basahin ang ilang mga halimbawa at sanggunian ng OOP, at ilang mga
simpleng mga halimbawa ng tangkang pagsubok, napagdesisyunan kong subukin ito, at alam mo ba?
Gumana ito nang walang kamali-mali para sa pagination. Ang code na ginamit dito ay isinulat sa PHP 4 ngunit
gagana rin sa PHP 5.


2. Ang Database

Paborito ko ang MySQL. Hindi sa panlalait sa iba pang database systems diyan, ngunit para sa
akin, MySQL lamang ang kailangan ko. At isang napakagandang katangian ng MySQL ay nagbibigay sila ng ilang mga
sample database nang walang bayad para magamit sa http://dev.mysql.com/doc/#sampledb.

Para sa aking mga halimbawa, gagamit ako ng world database (kulang kulang may 90,000 ang nakazip) na naglalaman ng
may 4000 na rekord na maaaring magamit, ngunit ang katangi-tangi sa iskrip ng PHP na ating gagawin ay
puwede itong magamit sa kahit na anong database. Ngayon ay nagkakaisa naman tayo na kung gugustuhin nating
hindi i-paginate ang ating mga resulta, mauuwi tayo sa napakahaba at mahirap gamiting
mga resulta gaya ng mga sumusunod:

example 2

(i-click para ipalaki ang ubod na habang larawan ~ 338k)

Kaya ipagpatuloy na lang nating gawing madaling intindihin ang ating mga datos, parang ganito:

example 3

Ang ganda,’di ba? Kapag nilagay mo na ang iyong code sa pagination class
mabilis at madali mo nang gawin ang napakaraming grupo ng impormasyon na mas madaling gamitin at hanapin gamit lang ang ilang mga linya ng code.
ilang mga linya ng code. Seryoso.


3. Ang Paginator

Itong halimbawa ay binubuo ng dalawang iskrip, ang magagamit uli na paginator class, at ang index file na magpapakita ng mga talahanayan at mga kontrol.

Paginator.class.php

Ang paginator class ay may dadalawang pamamaraan at ang constructor, paunti-unti nating gagawin ito habang pinapaliwanag ang bawat hakbang.

Tinatakda lamang ng kahulugang ito ang mga kailangang baryante ng paginator, sa kadahilanang ito ang helper class, at para lang ito sa pagination. Aasa lang ito sa isang mabisang koneksyon sa server ng MySQL at ang defined query na ilalakip sa kinakailangang parameter upang mai-paginate ang mga resulta. Magsimula tayo sa constructor na pamamaraan.


Mukhang madali, ‘di ba? Tinatakda lang sa pamamaraang ito ang object’s database connection at ang kinakailangang query. Matapos nito, bibilangin ang kung ilan ang mga nakuhang hanay mula sa query na iyon nang walang limitasyon at natatalunang parameter. Ang kabuuan ay mahalaga upang makagawa ng mga link para sa paginator.

Alalahanin na hindi ginagawa ang tangkang pagsubok o ano pang pagwawasto sa mga parameter para gawin itong simple, ngunit sa totoong buhay, ang mga ganitong pagwawasto ay esensyal.

Pagkuha ng mga Resulta

Ngayon, gumawa naman tayo ng pamamaraan na makapapaginate ng mga datos at ibalik ang mga resulta.

Pag-aralan natin ito nang bawat hakbang. Una, itatakda natin ang limitasyon at ang mga page parameters. Nakatakda ang mga ito ng default na 10 at 1 ayon sa pagkakabanggit. Titignan naman natin kung ang user ay nangangailangan ng binigay na bilang ng mga hanay o lahat ng mga ito. Base rito at sa page parameter, itatakda ang LIMIT parameter ng query. Ang “- 1” ng pahinang ito ay isinasaalang-alang dahil nagsisimula tayo sa mga pahinang nasa 1 imbes na 0.

Pagkatapos nito, susuriin ang query, at kukunin ang mga resulta. Sa wakas, makagagawa na tayo ng mga bagong results object na naglalaman ng limit, pahina at ang mga kabuuan parameter ng mga ginawang query, pati na rin ang mga datos para sa bawat nakuhang hanay.

Pagpapakita ng mga Pagination Link

Ngayon, isulat natin ang pamamaraan upang makuha ang mga pagination link.

Mahaba ang pamamaraan ito, may mga 34 na linya ng code, kaya ipapaliwanag natin kung anong nangyayari sa pamamaraang ito.

  1. Una, susuriin natin kung ang user ay nangangailangan ng binigay na bilang ng mga link o lahat ng mga ito. Pangalawa, ibabalik lamang ang empty string sapagkat wala namang pagination na kinakailangan.
  2. Matapos nito, kakalkulahin ang huling pahina base sa kabuuang numero ng mga maaaring gamitin na hanay at mga aytem na kailangan para sa bawat pahina.
  3. Kukunin naman ngayon ang mga links parameter na kumakatawan ng bilang ng mga link na ipakikita sa ilalim at ibabaw ng kasalukuyang pahina, at kalkulahin ang panimula’t pangwakas na link na lilikhain.
  4. Gagawa naman tayo ng pambungad na tag at itatakda ang klase nito sa list class parameter, at idagdag ang “previous page” link. Alalahaning para gumana ang link na ito, kinakailangan ang kasalukuyang pahina ang una, at maari nang itakda ang disabled property ng nasabing link.
  5. Sa puntong ito, ipapakita ang link sa unang pahina, at may lalabas na ellipsis na simbolo kung ang start link ay hindi ang una.
  6. Susunod naman ay idadagdag natin ang mga link sa ilalim at ibabaw ng kasalukuyang pahina base sa nakalkulang mga pambungad at pangwakas na parameter. Sa bawat hakbang, susuriin natin ang kasalukuyang pahina uli kung ang pahina ng link ay nakikita at kung nakatakda ang aktibong class nang wasto.
  7. Matapos nito, ipakikita naman natin ang isa pang ellipsis na simbolo at ang link sa huling pahina kung ang pangwakas na link ay hindi ang huli.
  8. Sa wakas, ipapakita ang “next page” link at itakda ang disabled state. Kapag ang user ay tinitignan ang huling pahina, isarado ang listahan, at bumalik sa binuong HTML string.

Iyan ang lahat ng nasa Paginator.class. Maaari pa rin naman nating nagdadagan ng mga setter at getter para sa database connection, limit, pahina, query at mga kabuuang parameter pero para maging simple para sa atin, panatilihin na lang natin ang mga ito.

4. Index.php

Ngayon ay gagawa naman tayo ng file na bahala sa paggamit ng Paginator class at sa pagpapakita ng mga datos, kaya hayaan mong ipakita ko sa iyo ang base HTML.

Madali lang. Ang file na ito ay nagpapakita lamang ng talahanayan na pupunuin natin ng mga datos na nakuha mula sa database. Alalahanin na para sa halimbawang ito, gumamit ako ng boostrap para sa basic page styling.

Paggamit ng ang Paginator

Ngayon, para magamit ang Paginator class, idagdag ang sumusunod na PHP code sa pinakaitaas ng dokumento.

Simple lang ang iskrip na ito. Ang kailangan lang ay ang Paginator class. Alalahanin na ang code na ito ay ipinapalagay ang ang file ay nasa parehas na direktoryo ng index.php file. Kung hindi ito ang nakalagay, i-update ang daan alinsunod sa tamang direktoryo.

Matapos nito ay gagawa naman tayo ng koneksyon sa ating database gamit ang MySQL library, kukunin ang mga paginator parameter galing sa GET request, at itatakda natin ang query. Dahil hindi naman tungkol sa MySQL ang sanaysay na ito, hindi ko na masyado idedetalye ang koneksyon o query na ginamit dito.

Panghuli, gagawa tayo ng Paginator object at kukunin ang mga resulta para sa kasalukuyang pahina.

Pagpapakita ng mga Resulta

Ngayon, para ipakita ang mga nalikom na resulta, idagdag ang sumusunod na code sa katawan ng talahanayan.

Inuulit lamang ang mga ito sa pamamagitan ng mga results data attribute na naglalaman ng mga pangsyudad na rekord, at ginagawan ng talahanayan para sa bawat rekord.

Mga Pagination Link

Ngayon, para maipakita ang mga paginator link, idagdag ang sumusunod na code sa ilalim ng talahanayan.

Para sa mga Paginator createLink na pamamaraan, ipapasa ang nakuhang mga link, parameter at ang css class para sa mga pagination link na ginamit mula sa bootstrap. Ito ang resulta mula sa ginawang pahina.

Kongklusyon

Dapat nakapagbigay ito ng lahat ng impormasyong kailangan mong malaman upang makatayo at makatakbo kasama ang pagination sa iyong aplikasyon.

Huwag mahiyang mag-iwan ng tanong, komento o pangkabuuang tugon sa feed sa ilalim!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.