【问题标题】:PHP Next & Back buttons instead of paginationPHP Next & Back 按钮代替分页
【发布时间】:2011-10-23 04:57:06
【问题描述】:

我想修改下面的脚本,以便没有分页号,只有一个上一个和下一个按钮。我希望上一个/下一个链接根据下一个/上一个页面是否存在来显示/变灰。例如,如果您在第 1 页,则不会显示上一个按钮,因为第 0 页不存在。

我目前使用的脚本从文本文件中获取数据 - 创建动态页面 - 并基于此创建分页:

(在 html 开始之前)

$data=file("brief.txt");
$pages=0;
foreach($data as $temp){
    $x=explode("|",$temp);
    if($x[0]>0){
        $pages=$pages+1;
    }
}
if($_GET['p']){
    $page=$_GET['p'];
}
if($_GET['i']){
    $index=$_GET['i'];
}

if($index == "p"){
    $page=$page-1;
}
if($index == "n"){
    $page=$page+1;
}
if($page < 1){
    $page=1;
}
if($page > $pages){
    $page=$pages;
} 
$line=$data[$page-1];
$fields=explode("|",$line);
?>

(在正文部分)

 <?php
 $show=6;
 echo "<li><a href='?i=p&p=$page'>&#171; PREV</li></a>";

if($page-($show/2) > 1){
    $temp=$page-$show;
    echo "<li><a href='?p=$temp'>...</li></a>";
}
if($page-($show/2) >= 1 && $page+($show/2) <= $pages){
    $start=$page-($show/2);
    $stop=$page+($show/2);
}
if($page-($show/2) < 1){
    $start=1;
    $stop=$show;
}
if($page+($show/2) > $pages){
    $start=$pages-$show;
    $stop=$pages;
}  
for($i=$start; $i<=$stop; $i++){
    if($page==$i){
        echo "<li class='active'>$i</li></a>";
    }
    else{
        echo "<li><a href='?p=$i'>$i</li></a>";
    }
}
if($page+($show/2) < $pages){
    $temp=$page+$show;
    echo "<li><a href='?p=$temp'>...</li></a>";
}
echo "<li><a href='?i=n&p=$page'>NEXT &#187;</li></a>";
?>

我只有下一个和上一个按钮来显示和工作,从简单地将脚本更改为:

<?php
echo "<li><a href='?i=p&p=$page'>&#171; PREV</li></a>";
echo "<li><a href='?i=n&p=$page'>NEXT &#187;</li></a>";
?>

但我不知道从那里去哪里。任何帮助都是极好的! :)

【问题讨论】:

    标签: php navigation pagination


    【解决方案1】:

    一方面,标签的嵌套是错误的——应该在之前。其次,代码不是很优雅——它可能会更短。

    但要回答有关禁用链接的问题,您可以使用

    <?php
    if($page == 1) echo "<li>echo &#171; PREV</li>" else echo "<li><a href='?i=p&p=$page'>&#171; PREV</a></li>";
    if($page == $pages) echo "<li>echo NEXT &#187;" else echo "<li><a href='?i=n&p=$page'>NEXT &#187;</a></li>";
    ?>
    

    (您的总页数可以在 $pages 中找到)。

    【讨论】:

    • 谢谢! :) 虽然我对
    • echo 部分有一些问题,所以我将其更改为: if ($page == 1) echo ""; else echo "
    • « PREV
    • ";
  • 猜猜也不错:-)
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签