Answer the question
In order to leave comments, you need to log in
Paginator class, what else should be able to do?
I wrote a simple Paginator class for (oddly enough) pagination when displaying a large list of elements (articles, ads, etc.), what other functionality can be added to it besides displaying a list of links? Or all the same "one class - one action"?
<?php
include 'db/db.php';
// Функции которые выполняет Пагинатор:
// - Определяет общее количество элементов каталога в выборке.
// - Определяет сколько элементов на странице каталога выводить.
// - Передает кол-во элементов на странице каталога (число) в запросы в БД при выводе списка статей и в Вычислитель количества страниц.
// - Вычисляет количество страниц каталога (и ссылок на них): общее кол-во элементов разделить на кол-во элементов на одной странице.
class Paginator {
public $totalElementsCount;
public $ElementsPerPage;
public function __construct($pdo, $ElementsPerPage = 3){
$sql = "SELECT * FROM pages";
$result = $pdo->query($sql);
$totalCount = $result->rowCount();
$this->totalElementsCount = $totalCount;
$this->ElementsPerPage = $ElementsPerPage;
}
public function pagesAndLinksCalculator(){
$numofpages = ceil($this->totalElementsCount / $this->ElementsPerPage);
$i = 1;
while($i <= $numofpages)
{
$pagelinks[] = $i;
$i++;
}
return $pagelinks;
}
}
$paginator = new Paginator($pdo); // Второй аргумент не указываю, по умолчанию - 3 элемента на странице.
$totalElements = $paginator->totalElementsCount;
$pagelinks = $paginator->pagesAndLinksCalculator();
?>
<html>
<?php echo "Всего статей: " . $totalElements; ?>
<h1>Страницы:</h1>
<?php foreach($pagelinks as $pagelink): ?>
<a href="?page=<?php echo $pagelink ?>"><?php echo $pagelink ?></a>
<?php endforeach;?>
</html>
Answer the question
In order to leave comments, you need to log in
For starters, this is not a paginator, but a cursor: https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%80%D...
The task of the paginator is to get an arbitrary iterator and divide it by chunks, and not to climb into the database.
PS An example of a relatively (because of redundant coupling) normally implemented paginator: https://github.com/illuminate/pagination
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question