2011-12-18 79 views
0

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

我想分页看起来像这样:

Page 3 | Page 4 | Page 5 

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

到目前为止,我的执行凸显了当前页面,但是不会使当前页面的中心环节。此外,当它到达最后一页时,它会在分页中增加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

'($页== $ I + $页)'< - 这是唯一的,始终,真正当'$ I == 0'。 – FakeRainBrigand 2011-12-18 17:00:37

+0

你可以给'$ pages'一个值吗?在你的例子中是3或5吗? – FakeRainBrigand 2011-12-18 17:03:32

+0

是的,页面会从0 ... n开始编号,但我以3 - 5为例。 – GV1 2011-12-18 17:05:30

回答

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)是在数据($1您的值)设定0, 1, 2 是中心。如果这是一个简化版本,那么你必须做更多的数学运算,例如,number of items/2 rounded down应该给中心。

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