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

时间:2017-04-29 00:55:34

标签: php jquery css mysql pagination

我正在尝试设置php-mysql分页的条件,以便它可以更改当前页面" li "到" li class ="有效" "标记当前所选页面。我是php的新手并且正在寻找这样的分页教程,但没有运气。

到目前为止,我已经完成了哪些工作但无法标记所选页面。这里$ id用于检测当前页面ID。如何设置条件(或其他)以便我可以在分页中标记当前页面项?数千人感谢帮助我。

   <ul class="pagination">
     <?php if($id > 1) {?> <li><a href="?id=<?php echo ($id-1) ?>">Previous</a></li><?php }?>
     <?php
     for($i=1;$i <= $page;$i++){
     ?>

     <?php
     if ($id>1)
     { ?>
         <li class="active"><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li>
    <?php }
     ?>
    <!--     <li><a  href="?id=<?php echo $i ?>"><?php echo $i;?></a></li>  -->
      <?php
     }
      ?>
    <?php if($id!=$page)
    //3!=4
    {?> 
      <li><a href="?id=<?php echo ($id+1); ?>">Next</a></li>
    <?php }?>
 </ul>

2 个答案:

答案 0 :(得分:0)

您可以从

更改for循环
 <?php
     for($i=1;$i <= $page;$i++){
     ?>

     <?php
     if ($id>1)
     { ?>
         <li class="active"><a href="?id=<?php echo $i ?>"><?php echo $i;?></a></li>
    <?php }
     ?>
    <!--     <li><a  href="?id=<?php echo $i ?>"><?php echo $i;?></a></li>  -->
      <?php
     }
      ?>

为:

<?php
for($i=1;$i <= $page;$i++){
  $class=($i==$id)? ' class="active"' : '';
  echo '<li'.$class.'><a href="?id='.$i.'">'.$i.'</a></li>';
}
?>

如果我已正确理解您的代码,$ page代表总页数,$ id代表当前页面,这会将当前页码设置为活动类,并将其他页面保留为不带类

答案 1 :(得分:0)

假设$id是当前页码,而$page页数,则需要在循环中执行以下操作才能突出显示一个页面:

  • if($i==$id) // highlight
  • else // don’t highlight

您的主要错误是您没有测试是否$i==$id,并且您没有其他未突出显示的版本。

我真的认为你应该通过将逻辑与HTML分开来简化代码。否则它变得非常,并且很难管理。

我冒昧地这样做了。通过这种方式,您可以看到逻辑在哪里工作,您只需要在HTML中打印结果。

<?php
    $id=3;  //  test value
    $page=20;   //  test value

    $li=array();    //  temporary array for convenience
    $template='<li%s><a href="?id=%s">%s</a></li>';
    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
?>
<ul class="pagination">
<?php print $li; ?>
</ul>

您还将看到两种简化操作的方法:

  • 我使用数组作为临时容器。以这种方式添加项目更容易,然后implode将其添加到字符串中
  • sprintf可以更轻松地定义模板字符串,因此您可以更轻松地管理HTML组件,并在时机成熟时填补空白。