Од мог претходног чланка о пагинацији је прошло готово 7 година, неке ствари су се у међувремену промениле, и стога сам одлучио да освежим стари чланак са новим информацијама.
На пример, у време писања чланка (2011), још увек није објављена PHP 5.5 верзија (тек 2013), у којој је mysql_connect функција проглашена застарелом (deprecated) а у верзији 7.0 и избачена. Сада користимо PDO, који је укратко објашњено: database access layer, који, између осталог, подржава и MySQL. Уколико не желите да истражујете превише, битно је да знате да је објектно оријентисан, садржи
prepared statements које значајно олакшавају рад са базама, сигурнији је и подржава различите типове база података.
Дакле, прво остварујемо конекцију користећи PDO:
$konekcija = new PDO('mysql:host='.$hostname.';dbname='.$database.';', $user, $password);
Затим идемо на пребројавање свих ставки у табели „pagi“ како би добили коначан број на основу ког ћемо касније креирати пагинацију:
$query = $konekcija->prepare("SELECT id FROM pagi");
Овде у променљиву смештамо информацију о томе колико ће се ставки приказивати на једној страни:
$prikaz = 4;
Ако једноставно поделимо укупан број свих ставки у табели и број ставки који желимо да прикажемо на једној страни, добијамо број страна:
$strukupno = ceil($brojunosa/$prikaz);
Напомена: користимо функцију ceil која ће, уколико је резултат дељења децимални број, заокружити тај резултат на први већи број. Дакле, уколико је број уноса у табели 30, а одредили смо да се по страни приказује 7 ставки, резултат ће бити 4.28, и ceil функција ће то заокружити на 5 – дакле имаћемо 5 страна. Пета страна ће приказивати само 2 ставке.
Затим, користећи GET методу, у URL-у добијамо информацију на којој се тренутно страни налазимо, преко променљиве page:
$trenutnastr = isset($_GET['page']) ? $_GET['page'] : '';
Наравно, можемо користити и само $trenutnastr = $_GET[‘page’]; али ако је приказивање грешака укључено, добијаћемо „Notice: Undefined variable…“ грешку, а ово је један од начина да то заобиђемо. Наравно, увек можете и дефинисати празну променљиву како избегли ту грешку: $trenutnastr = “;.
Даље, постављамо ограничења која ће спречити да се манипулацијом променљиве page позове непостојећа страна (на пример страна -2 или страна број 8 а имамо само 5 страна).
if ($trenutnastr < 1){
$trenutnastr = 1;
}
elseif ($trenutnastr > $strukupno) {
$trenutnastr = $strukupno;
}
И најзад, следи позивање ставки из базе, можете приметити да користимо bindValue
$query2 = $konekcija->prepare("SELECT * FROM pagi LIMIT :pocetak, :prikaz");
$query2->bindValue(':pocetak', (int) $pocetak, PDO::PARAM_INT);
$query2->bindValue(':prikaz', (int) $prikaz, PDO::PARAM_INT);
$query2->execute();
Даље, остаје вам само да прикажете податке и пагинацију, као што можете да видите у примеру који се може преузети испод. Читајте и коментаре у коду, где сам укључио још нека објашњења.
НАПОМЕНА: Ово је јако поједностављен пример пагинације који може послужити како би схватили основе функционисања исте, а то му је и сврха. Због могућих проблема са сигурношћу, компатибилношћу итд. не саветујем употребу истог у пројектима, нити је томе намењен.
Величина: ~ 4 Kb, .zip фајл
Садржи пример скрипте (морате унети своје податке за повезивање са базом), као и пример табеле коју можете импортовати у своју базу како би је користили са овим примером пагинације
Ево и неколико примера/ресурса за даље читање, уколико желите да сазнате више о PDO и пагинацији:
Ja sam opasno zaribao sa PHP-om. U meri da bih morao ponovo da ga „učim“.
Nice facelift, btw. 😉
Veruj mi, nema boljeg načina da osvežiš pamćenje od novog projekta (malog za početak) i obilne upotrebe Google i StackOverflow 😉
Što se tiče facelifta, hvala, išao sam na to da bude što jednostavnije 🙂