如何在以下代码中设置条件以在分页中标记当前页面?
我试图设置php-mysql分页的条件,以便它可以将当前页面“ li ”更改为“ li class =”active“ ”以标记当前所选页面。 我是php的新手并且正在寻找这样的分页教程,但没有运气。
到目前为止,我已经做了什么工作,但无法标记选定的页面。 这里$ id用于检测当前页面ID。 如何设置条件(或其他)以便我可以在分页中标记当前页面项? 数千人感谢帮助我。
1) {?> - <a href="https://stackoverflow.com/?id=">Previous
<?php for($i=1;$i 1) { ?> - <a href="https://stackoverflow.com/?id=">
<!-- - <a href="https://stackoverflow.com/?id=">
--> - <a href="https://stackoverflow.com/?id=">Next
你可以改变你的for循环
1) { ?>
至:
'.$i.''; } ?>
如果我已正确理解您的代码,$ page表示总页数,$ id表示当前页面,这会将当前页面编号设置为活动类,并保留其他页面没有类
假设$id
是当前页码,并且$page
是$page
总数 ,您需要通过在循环中执行以下操作来突出显示:
-
if($i==$id) // highlight
-
else // don't highlight
您的主要错误是您没有测试$i==$id
,并且您没有替代的非突出显示版本。
我真的认为你应该通过将逻辑与HTML分开来简化代码。 否则变得非常难以理解,而且很难管理。
我冒昧地这样做了。 通过这种方式,您可以看到逻辑在哪里工作,您只需要在HTML中打印结果。
%s'; if($id>1) $li[]=sprintf($template,'',$id-1,'Previous'); for($i=1;$i<=$page;$i++) { if($i==$id) $li[]=sprintf($template,' class="active"',$i,$i); // Current else $li[]=sprintf($template,'',$i,$i); } if($id<$page) $li[]=sprintf($template,'',$id+1,'Next'); $li=implode('',$li); // convert to string for printing ?>
您还将看到两种简化操作的方法:
- 我使用数组作为临时容器。 以这种方式添加项目然后将其内
implode
到字符串中更容易 -
sprintf
使定义模板字符串变得更容易,因此您可以更轻松地管理HTML组件,并在时机成熟时填补空白。