我有PHP分页,它显示上一页和第一页的页码有效,但它不应显示活动类。我已尝试使用以下代码,对于搜索结果,我在URL中没有页码。如何显示当前页面的分页?
$limit = 20;
$total = count($_productCollection); //150
$total_pages = ceil($total / $limit);
$page=1;
echo "<ul class='pagination'>";
echo "<li><a href='index.php?page=".($page-1)."' class='button'>Previous</a></li>";
for ($i=1; $i<=$total_pages; $i++) {
echo "<li><a href='index.php?page=".$i."'>".$i."</a></li>";
};
echo "<li><a href='index.php?page=".($page+1)."' class='button'>NEXT</a></li>";
echo "</ul>";
答案 0 :(得分:1)
当实际页面与<li>
变量相等时,您应该将活动类添加到$i
元素。
你遇到的问题是你使用$page
变量静态(它总是= 1)。您应该从$_GET['page']
变量中获取页面的值。
此外,我添加了一个条件,以检查它的第一页是否显示以前的内容。
<?php
$limit = 20;
$total = count($_productCollection); //150
$total_pages = ceil($total / $limit);
$page= isset($_GET['page']) ? $_GET['page'] : 1; ;
?>
使用PHP添加html的第一种方法:
<ul class="pagination">
<?php
//if its first page don't show previous ( Also you need to do the same thing for last page)
if ($page > 1) { ?>
<li><a href="index.php?page=<?php echo $page-1 ?>"> Previous </a></li>
<?php } ?>
<?php for ($i=1; $i<=$total_pages; $i++) {
//if its active page add active variable
if($page == $i){
$class = 'active';
}else{
$class = '';
}
?>
<li class="<?php echo $class; ?>"><a href='index.php?page=<?php echo $i ?>'><?php echo $i ?></a></li>
<?php } ?>
<li><a href="index.php?page=<?php echo $page + 1 ?>"> NEXT </a></li>
</ul>
使用echo
添加html以打印html
元素的第二种方法:
echo '<ul class="pagination">';
//if its first page don't show previous ( Also you need to do the same thing for last page)
if ($page > 1) {
echo '<li><a href="index.php?page='.($page-1).'"> Previous </a></li>';
}
for ($i=1; $i<=$total_pages; $i++) {
if($page == $i){
$class = 'active';
}else{
$class = '';
}
echo '<li class="'.$class.'"><a href="index.php?page='.$i.' ">$i</a></li>';
}
echo '<li><a href="index.php?page='.($page + 1).'"> NEXT </a></li>';
echo '</ul>'
修改强>
此代码可以执行您想要的操作,但这不是您应该执行的操作。我们假设您有超过100页。会发生什么?您显示所有页面,以便所有数字都在屏幕上。我建议使用一些jQuery
库。看看这个simplePagination。它将帮助您以非常简单的方式实现prev 1 2 3 ... 150 next
。
答案 1 :(得分:0)
我对您的代码进行了一些小的更改。它应该完美无缺。
复制并粘贴以下代码
$limit = 20;
$total = count($_productCollection); //150
$total_pages = ceil($total / $limit);
$page= isset($_GET['page']) ? $_GET['page'] : 1; //get page from request or default 1
echo "<ul class='pagination'>";
if($page > 1) //only show prev if current page is greater than 1
echo "<li><a href='index.php?page=".($page-1)."' class='button'>Previous</a></li>";
for ($i=1; $i<=$total_pages; $i++) {
if($i == $page){
echo "<li class='active'> <span>".$page."</span></li>";
}else{
echo "<li><a href='index.php?page=".$i."'>".$i."</a></li>";
}
};
if($page < $total_pages) //only show next if current page is less than total page
echo "<li><a href='index.php?page=".($page+1)."' class='button'>NEXT</a></li>";
echo "</ul>";
答案 2 :(得分:-1)
for ($i=1; $i<=$total_pages; $i++) {
echo "<li class='" . ( $i == $page?'active':'' ) . "'>
<a href='index.php?page=".$i."'> ".$i."</a></li>";
};