Клас за странициране

Автор: idevbg

Здравейте,
гледам че има доста теми из форума за странициране и проблеми с него. Сигурно има доста уроци тук за това, но реших да сложа и моя си клас за тая работа.

Изтегляте си самия клас от тук : http://pastebin.com/jihAFvFx

Слагам урока в Code, тъй като няма да обяснявам за написването на класа, но ако имате въпроси и Ви е интересно винаги може да питате във форума.

Класа се ползва по следния начин :

Първо имаме нужда да си пуснем една заявка, кяото да преброи общия брой резултати, които ще изкарваме. Аз ползвам само mysqlI и съм позабравил mysql(); но вие ще можете да си пуснете заявката както Ви е по-удобно.

$count_query = $mysqli -> query("select count(`id`) as `total` from `vs` order by `id` desc");
$count = $count_query -> fetch_array();
$total = $count['total'];

Сега имаме $total, което ни държи общия брой резултати.

$page = (int)$_GET['page'];
// тук взема текущата страница. Ако искате в URL-то да ви е различно от ?page=1 променете $_GET-а
$page = is_numeric($page) ? $page : 1;
$perPage = 10; // Тук попълвате по колко резултата на страница искате.
$paging = new paging($page, $perPage, $total);
$offset = $paging -> offset;
$allPages = $paging -> ShowPages();

ShowPages(); връща резултатите във вид ЛИНК!ИМЕ!КЛАС|ЛИНК!ИМЕ!КЛАС
Т.е. ако имаме три страници и сме на втората ще имаме следния резултат :

1!<>!page_inactive

Така след един

$onePage = explode("|", $allPages);

вече имаме един масив държащ елементите на всяка страница. Достатъчно е да ги обходим така:

foreach($singlePage as $pageElements) {
$pageElement = explode("!", $pageElements);
// и тук вече имаме
// $pageElement[0] - което е линка на страницата
// $pageElement[1] - което е името на страницата
// $pageElement[2] - което е класа на страницата
}

Извеждате си както искате тези резултати и сте готови. Само подавате index.php?page=цифра
И сте готови. Ако някой не може да си го дооправи да пита във форума – ще му помогна.

Скоро правих класа да стои текущата страница винаги в средатата, като ти показва три вляво и три вдясно. Нещо като на youtube коментарното странициране както се държи. Ако някой има други идеи, с които да се подобри ще го дописвам.

Благодаря за четенето 🙂

Вашият коментар