分页PHP显示负数

时间:2018-02-09 05:11:53

标签: php pagination

我试图编写分页代码,它应该显示:

  

<&。1 ... 11>>

但它显示了这一点:

  

<< -5 ... 11>>

如果内容少于11页,则会发生这种情况。

这是我的代码

<?php if($page != 1): ?>

    <a href="?page=<?php echo $page-1; ?>&srch-term=<?php echo @$_GET['srch-term']; ?>&tag=<?php echo @$_GET['tag']; ?>&color=<?php echo @$_GET['color']; ?>" aria-label="Previous">
      <span aria-hidden="true">&laquo;</span>
    </a>

<?php else: ?>

    <span aria-hidden="true">&laquo;</span>

<?php endif; ?>

</li>

<?php
      $limitPage = 5;
      $fromPage = ($page - $limitPage) <= 0 ? 1:$page - $limitPage; 
      $endPage = ($page + $limitPage) >= $count? $count:$page+$limitPage;
      if($page <= ($limitPage)) $endPage = ($limitPage*2) + 1;
      if(($page - $limitPage) > ($count - ($limitPage*2))) $fromPage = $count - ($limitPage*2);
?>
<?php for($i=$fromPage;$i<=$endPage;$i++): ?>

    <li class="<?php echo ($page == $i)? 'active':''; ?>"><a href="?page=<?php echo $i; ?>&srch-term=<?php echo @$_GET['srch-term']; ?>&tag=<?php echo @$_GET['tag']; ?>&color=<?php echo @$_GET['color']; ?>"><?php echo $i; ?></a></li>

<?php endfor; ?>

  <li class="<?php echo ($page == $count)? 'disabled':''; ?>">
        <?php if($page != $count): ?>
            <a href="?page=<?php echo $page+1; ?>&srch-term=<?php echo @$_GET['srch-term']; ?>&tag=<?php echo @$_GET['tag']; ?>&color=<?php echo @$_GET['color']; ?>" aria-label="Next">
              <span aria-hidden="true">&raquo;</span>
            </a>
        <?php else: ?>
                <span aria-hidden="true">&raquo;</span>
        <?php endif; ?>

1 个答案:

答案 0 :(得分:0)

看起来这就是没有按预期工作的路线。

 if(($page - $limitPage) > ($count - ($limitPage*2))) $fromPage = $count - ($limitPage*2);

这是一个php沙箱链接,其中包含一些可以帮助你的调试代码。 http://sandbox.onlinephpfunctions.com/code/df2faac69d217ce8e5bea86b63325b8dd4c49600

$limitPage = 5;
$page = 1;
$count = 5;
$fromPage = ($page - $limitPage) <= 0 ? 1:$page - $limitPage; 
$endPage = ($page + $limitPage) >= $count? $count:$page+$limitPage;

echo $fromPage . ' ' . $endPage. "\n";

if($page <= ($limitPage)) $endPage = ($limitPage*2) + 1;

echo $fromPage . ' ' . $endPage. "\n";

if(($page - $limitPage) > ($count - ($limitPage*2))) $fromPage = $count - ($limitPage*2);

echo $fromPage . ' ' . $endPage;