如何在以下代码中设置条件以在分页中标记当前页面?

我试图设置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组件,并在时机成熟时填补空白。