Php 分页,用于循环
我正在尝试做一个分页,在那里我可以限制它在导航中显示多少数字,所以它会是这样的 <1。。。[3] 4 5 ... 9> 我现在的脚本在我读到最后几页之前一直运行良好。假设我将导航中允许的最大数量设置为4,页面数量设置为9。然后它将工作到第7页,但从第7页开始,它将开始缩小数字,而不是将它们放在当前页码的前面。它的行为将是这样的 <1。。。[7] 8.9 <1。。。[8] 九, 当我到达最后一页时,导航将只显示 <1。。。九, 我希望它看起来像这样 <1。。。6[7]8 9> <1。。。6 7[8]9> <1。。。6 7 8[9] 我已经试着让它工作了好几个小时了,但是有点卡住了。有什么建议吗Php 分页,用于循环,php,pagination,Php,Pagination,我正在尝试做一个分页,在那里我可以限制它在导航中显示多少数字,所以它会是这样的 我现在的脚本在我读到最后几页之前一直运行良好。假设我将导航中允许的最大数量设置为4,页面数量设置为9。然后它将工作到第7页,但从第7页开始,它将开始缩小数字,而不是将它们放在当前页码的前面。它的行为将是这样的 1)){ //检查页面数是否大于导航中允许的最大值,以及页面数是否不等于2 如果($num_pages>$max_nav_pages)&&($page_number!==2)){ 回声“; 回声“>>”; 打
// Method to output the pagination
function output_pagination($max_per_page, $table) {
$page_number = $this->valid_page_number($this->get_page_number(), $table); // Get current page number
$num_pages = $this->count_table_rows($table) / $max_per_page; // Set the number of pages
$max_nav_pages = 4; // Max numbers of pages in the page navigation
$start = $page_number-1; // Value to start the loop on
// Set start to 1 if it equals 0
if($start === 0) {
$start = 1;
}
// Keep loop going until $i no longer is greater or equal to number of pages
for($i = $start; $i <= $num_pages; $i++) {
// Output prev arrow + '...' + 1 if its the start of the pagination and page number not equals 1 ($i = 1 and page number is > $i)
if(($i === $start) && ($page_number > 1)) {
// Check if number of pages are greater then max allowed in navigation and if page number not equals 2
if(($num_pages > $max_nav_pages) && ($page_number !== 2)) {
echo "<< ";
echo "< ";
echo "1 ";
echo " ... ";
$i = $page_number - 1;
} else {
echo "<< ";
echo "< ";
echo $i;
}
}
// Output current page in bold text if $i equals or are greater then $start and page number equals $i
else if (($i >= $start) && ($page_number === $i)) {
echo " <b>[".$i."]</b> ";
}
// Output "...", last page number and next page arrow. if we have 10 pages or more. Then break the loop. We are done.
else if($i === $start + $max_nav_pages) {
// Check if page number equals number of pages - max allowed nav pages + 1
if($page_number === $num_pages-$max_nav_pages+1) {
echo $i;
echo " >";
echo " >>";
break;
} else {
echo " ... ";
echo $num_pages;
echo " >";
echo " >>";
break;
}
}
// Output next page number if $i is greater then $start and $i + 1 is equal or greater then number of total pages
else if(($i > $start) && ($i + 1 <= $num_pages)) {
echo " ".$i." ";
}
else { // Output last page number and next page arrow. We are done.
echo $i;
echo " >";
echo " >>";
}
}
}
//输出分页的方法
函数输出分页($max_/页,$table){
$page_number=$this->valid_page_number($this->get_page_number(),$table);//获取当前页码
$num\u pages=$this->count\u table\u rows($table)/$max\u per\u page;//设置页数
$max_nav_pages=4;//页面导航中的最大页数
$start=$page_number-1;//用于启动循环的值
//如果start等于0,则将其设置为1
如果($start==0){
$start=1;
}
//继续循环,直到$i不再大于或等于页数
对于($i=$start;$i$i)
如果($i===$start)&($page_number>1)){
//检查页面数是否大于导航中允许的最大值,以及页面数是否不等于2
如果($num_pages>$max_nav_pages)&&($page_number!==2)){
回声“;
回声“>>”;
打破
}否则{
回声“…”;
echo$num_页面;
回声“>”;
回声“>>”;
打破
}
}
//如果$i大于$start且$i+1等于或大于总页数,则输出下一页码
如果($i>$start)和($i+1假设您在第8页,那么循环总是从$page_number-1开始,它将是7,这意味着永远不会显示6。您需要从$page_number-$max_nav_pages开始循环,并确定哪些数字应该以这种方式显示。如果您想显示一个表,我强烈推荐这个很棒的jQuery plugin。它内置了分页功能。谢谢!我在更改了它之后使它工作了,并根据它生成了数字:)当然,没问题。