苦苦挣扎实施分页

时间:2011-12-18 16:55:05

标签: php

我已经部分开发了我的分页实现,但我有一个问题。

我希望分页看起来像这样:

Page 3 | Page 4 | Page 5

分页中的中间链接是当前选定的页面。如果页面为0,则当前选择的页面是第一个链接。如果页面不为0,则当前选择的页面是第二个链接。如果页面是最后一页,则当前选择的页面是第3个链接。

到目前为止,我的实现突出了当前页面,但没有将当前页面作为中心链接。此外,当它到达最后一页时,它会为不存在的分页添加2个额外页面。

<?php for($i=0; $i <= $pages && $i < 3; $i++) : ?>
    <li <?php echo ($page == $i + $page) ? 'class="current-page"' : '' ?>><a href="category.php?category=<?php echo $category->category ?>&page=<?php echo $page + $i ?>"><?php echo $page + $i ?></a></li>
<?php endfor; ?>

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

据我所知,你的问题就是正确的输出。

<?php
$page = 3;
$pages = 5;
$category = 'abc';
?>

<?php for ($i = 0; $i <= $pages && $i < 3; $i++) : ?>
<li<?php echo ($i == 1) ? ' class="current-page"' : '' ?>>
    <a href="category.php?category=<?php echo $category ?>&page=<?php echo $page + $i ?>"><?php echo $page + $i ?></a>
</li>
<?php endfor; ?>

输出将是......

<li>
    <a href="category.php?category=abc&page=3">3</a>
</li>
<li class="current-page">
    <a href="category.php?category=abc&page=4">4</a>
</li>
<li>
    <a href="category.php?category=abc&page=5">5</a>
</li>

我将$category->category简化为$category进行测试。请务必在代码中将其更改回来。

($i == 1)代替($page == $i + $page)的原因在于数据集0, 1, 2$1的值} 1 是中心。如果这是一个简化版本,你将不得不做更多的数学运算,例如,number of items / 2 rounded down应该给中心。

希望有所帮助。如果没有,请添加更多信息,我会更新我的答案。