类似面包屑的步骤导航


breadcrumb like steps navigation

我有一件小事想不通。

我有一个页面,其中有6个步骤。如何制作类似面包屑的导航,其中下一个步骤处于非活动状态,而之前的所有步骤都处于活动状态?

Ie。

步骤1>步骤2>步骤3>步骤4>步骤5>步骤6

当我在第4步时会是这样

步骤1>第2步>第3步第4步>第5步>第6步

这些活动步骤的url中会有一个指向该步骤页面的参数。

即,步骤1的页面参数为页面=介绍

希望有人能帮忙?

-------解决方案-------

session_start();
$_SESSION['page'][] = $_GET["page"];
$steps = array(
    "selecthouse" => "Vælg hustype og tagform",
    "selectrooftile" => "Vælg tagsten",
    "angleinput" => "Tagvinkel",
    "rfinish" => "Tag-detaljer",
    "inputdims" => "Indsæt mål",
    "matliste" => "Materiale-liste",
    );
foreach($steps as $key => $value) {
    if(in_array($key, $_SESSION['page'])) {       
        echo '<a href="?page='.$key.'">'. $value .'</a></b> >';
    } else {
        echo $value ." > ";
    }
}

有很多方法可以做到这一点,最好的方法实际上取决于代码的其余部分。

我个人对这种线性导航的偏好是将用户访问的页面存储在会话中的数组中,例如

<?php
  session_start();
  $_SESSION['pages'][] = $_SERVER['REQUEST_URI'];
?>

然后,你所需要做的就是在"面包屑"中的每个项目周围放置一个if-in数组,例如之类的东西

<?php
  if (in_array('/step1.php',$_SESSION['pages'])) {
    ?>
    <a href="/step1.php">Step 1</a>
    <?php
  } else {
    ?>
    Step 1
    <?php
  }
?>

编辑

从您新发布的代码中,有一个结束</b>,但没有开始标记。

至于取消设置以恢复到一个步骤,你最好这样做:

<?php
  $stepskeys = array_keys($steps);
  $_SESSION['pages'] = array(
    0 => $stepskeys[1],
    1 => $stepskeys[2],
    2 => $stepskeys[3]
  );
?>

这会将数组重置回步骤3。