如何从php分页中的页码开始?

时间:2018-06-14 08:31:13

标签: php

我有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>";  

3 个答案:

答案 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>";
    };