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