gpt4 book ai didi

php - 如何创建分页器链接

转载 作者:行者123 更新时间:2023-11-29 00:54:42 25 4
gpt4 key购买 nike

我正在尝试创建一个基于 mysql 表中的行数创建的动态页面链接。我想每页显示 10 个结果,并希望 php 脚本创建指向其他页面的链接。

所以我正在考虑使用 num_rows 并将其除以 10,但是如果我有 53 行,则返回值将是 5.3,因为我需要 6 页而不是 5 页。我正在考虑使用 round 函数并将其循环a for I 语句直到 $pages > $rows_rounded。每 10 行添加一个指向页面的链接($i)这是实现此目标的最佳方法还是有其他更简单的方法?

最佳答案

我制作的 pagenator 类。 getCurrentPages() 返回您应该在数组中显示的所有页面。所以如果你在第一页,你想显示总共 9 页,你会得到一个数组 1-9。但是,如果你在第 10 页,你会得到一个数组 6-14。如果总共有 20 页,而你在第 20 页,你会得到一个数组 11-20。

<?php

class Lev_Pagenator {

private $recordsPerPage;
private $currentPage;
private $numberOfTotalRecords;
private $lastPage = null;

public function __construct($current_page, $number_of_total_records, $records_per_page = 25) {
$this->currentPage = $current_page;
$this->numberOfTotalRecords = $number_of_total_records;
$this->recordsPerPage = $records_per_page;
}

public function getCurrentStartIndex() {
return ($this->currentPage - 1) * $this->recordsPerPage;
}

public function getCurrentPages($number_of_pages_to_display = 9) {
$start_page = $this->currentPage - floor($number_of_pages_to_display / 2);
if ($start_page < 1) $start_page = 1;
$last_page = $this->getLastPage();
$pages = array($start_page);
for ($i = 1; $i < $number_of_pages_to_display; $i++) {
$temp_page = $start_page + $i;
if ($temp_page <= $last_page) {
$pages[] = $temp_page;
} else {
break;
}
}
return $pages;
}

public function getPreviousPage() {
if ($this->currentPage === 1) return false;
return $this->currentPage - 1;
}

public function getNextPage() {
if ($this->currentPage === $this->getLastPage) return false;
return $this->currentPage + 1;
}

public function getLastPage() {
if ($this->lastPage === null) $this->lastPage = ceil($this->numberOfTotalRecords / $this->recordsPerPage);
return $this->lastPage;
}
}
?>

编辑(用法):

<?php

$pagenator = new Lev_Pagenator($current_page, $number_of_total_records, $records_per_page);
$pages_array = $pagenator->getCurrentPages($number_of_pages_to_display);
?>

关于php - 如何创建分页器链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6668072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com