分页功能的页数限制
Limit of pages on pagination function
所以,我有这个分页代码,它用页面打破了 table,一切正常......
但是...如果页面太多,它看起来很难看,就像这样:
我是 PHP 的新手,这是我当前的代码:
<?php
function pagination($page,$num_page)
{
$max_pages = 15;
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
}
for($i=1; ($i<=$num_page)/* && ($i<=$max_pages)*/;$i++)
{
if($i==$page)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>
我只是想将其更改为如下所示:
$max_pages=10;
if ($num_pages > $max_pages)
echo "<< < 1 ... 3 4 5 6 7 8 9 10 ... 81 > >>"
我该怎么做?我现在不知道如何以一种好的方式去做 =X
但我不想要一个给定的代码,我想了解它是如何工作的以及为什么我应该这样做。
顺便说一句,
$num_pages
是 table 将拥有的页数。
$page
是当前页
$max_pages
将是要显示的最大页数。
<?php
function pagination($page,$num_page)
{
$max_pages = 15;
//Set a start and end point for page links
$start= $page-5;
$end= $page+5;
if($start < 1) $start= 2;
if($end > $num_page) $end= $num_page -1;
//
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=1">1</a></li> $nbsp ... $nbsp ';//Add first page link and ...
}
//Change the starting value of $i to start and end were you want it.
for($i=$start; ($i<=$end)/* && ($i<=$max_pages)*/;$i++)
{
if($i==$page)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo ' $nbsp ... $nbsp <li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $num_page . '">' . $num_page . '</a></li>'; //Add last page link and ...
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>
好的,我添加了几行,2 个变量,并更改了 i 的起始值。我评论了我所做的解释。不明白的可以私信我
我将我的代码改成了这个,现在它工作得很好:)
<?php
function pagination($page,$num_page)
{
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
}
$max_pages = 8; // How many page number you wish to display to the left and right sides of the current page
$index_start = ($page - $max_pages) <= 0 ? 1 : $page - $max_pages;
$index_finish = ($page + $max_pages) >= $num_page ? $num_page : $page + $max_pages;
for ($i = $index_start; $i <= $index_finish; $i++)
{
if ($page == $i)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>
所以,我有这个分页代码,它用页面打破了 table,一切正常......
但是...如果页面太多,它看起来很难看,就像这样:
我是 PHP 的新手,这是我当前的代码:
<?php
function pagination($page,$num_page)
{
$max_pages = 15;
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
}
for($i=1; ($i<=$num_page)/* && ($i<=$max_pages)*/;$i++)
{
if($i==$page)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>
我只是想将其更改为如下所示:
$max_pages=10;
if ($num_pages > $max_pages)
echo "<< < 1 ... 3 4 5 6 7 8 9 10 ... 81 > >>"
我该怎么做?我现在不知道如何以一种好的方式去做 =X 但我不想要一个给定的代码,我想了解它是如何工作的以及为什么我应该这样做。
顺便说一句,
$num_pages
是 table 将拥有的页数。
$page
是当前页
$max_pages
将是要显示的最大页数。
<?php
function pagination($page,$num_page)
{
$max_pages = 15;
//Set a start and end point for page links
$start= $page-5;
$end= $page+5;
if($start < 1) $start= 2;
if($end > $num_page) $end= $num_page -1;
//
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=1">1</a></li> $nbsp ... $nbsp ';//Add first page link and ...
}
//Change the starting value of $i to start and end were you want it.
for($i=$start; ($i<=$end)/* && ($i<=$max_pages)*/;$i++)
{
if($i==$page)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo ' $nbsp ... $nbsp <li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $num_page . '">' . $num_page . '</a></li>'; //Add last page link and ...
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>
好的,我添加了几行,2 个变量,并更改了 i 的起始值。我评论了我所做的解释。不明白的可以私信我
我将我的代码改成了这个,现在它工作得很好:)
<?php
function pagination($page,$num_page)
{
echo'<ul class="pagination" style="list-style-type:none; text-align: center;">';
$prevpage = $page-1;
if ($page != 1) {
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=1" class="first"></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' . $prevpage . '"><i class="fa fa-chevron-left"></i></a></li>';
}
$max_pages = 8; // How many page number you wish to display to the left and right sides of the current page
$index_start = ($page - $max_pages) <= 0 ? 1 : $page - $max_pages;
$index_finish = ($page + $max_pages) >= $num_page ? $num_page : $page + $max_pages;
for ($i = $index_start; $i <= $index_finish; $i++)
{
if ($page == $i)
{
echo'<li style="padding:5px;">'.$i.'</li>';
}
else
{
echo '<li style=" padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$i.'">'.$i.'</a></li>';
}
}
$nextpage = $page+1;
if ($page != $num_page)
{
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p=' .$nextpage.'"><i class="fa fa-chevron-right"></i></a></li>';
echo '<li style="padding:5px;"><a href="pesquisa_solicitacao.php?p='.$num_page.'" class="last"></a></li>';
}
echo'</ul>';
}
if($num_page>1)
{
pagination($page,$num_page);
}
?>