PHP带有活动标签的动态导航

j0pj023g  于 2023-03-11  发布在  PHP
关注(0)|答案(1)|浏览(94)

我正在尝试用单独的PHP文件创建一个动态的PHP导航菜单。
我目前拥有以下文件:

currentPage.php-此文件将获取用户所在页面的当前页面名称

<?php
    $page = basename($_SERVER['PHP_SELF']);
    $_SESSION['page'] = $page;
?>

fetchPages-此文件应从SQL数据库中获取所有活动页面,并创建一个列表,当用户位于相应页面时,将活动类添加到相应页面标题文本中

<?php
include 'connect.php';
include 'currentPage.php';

$sql = "SELECT pageTitle, pageUrl FROM pages ORDER BY id";
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result) > 0){
}
else{
    $msg = "No pages found";
}
?>
<?php while ($row = mysqli_fetch_assoc($result)) { ?>
    <a class="<?php if($_SERVER['PHP_SELF'] == $_SESSION['page']){echo "active";} ?>" href="<?php echo $row['pageUrl'] ?>"><?php echo $row['pageTitle'];?></a>
<?php } ?>
<br>

问题是它不工作,因为它添加了一个“活动”类到所有行。任何帮助,在正确的方向将是非常感谢!

qhhrdooz

qhhrdooz1#

1.您应该在开始时使用会话初始化-session_start();

  1. if($_SERVER['PHP_SELF'] = $_SESSION['page'])-在这里您指定一个值,而不是比较。使用=====
    1.逻辑错误-您将从数据库中获取字符串,但不将数据库中的值与当前页面进行比较,而是将PHP_SELF$_SESSION['page']进行比较,结果始终为true。
<?php
session_start();
include 'connect.php';
include 'currentPage.php';

$sql = "SELECT pageTitle, pageUrl FROM pages ORDER BY id";
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result) > 0){
}
else{
    $msg = "No pages found";
}
?>
<?php while ($row = mysqli_fetch_assoc($result)) { ?>
    <a class="<?php if(echo $row['pageUrl'] == $_SESSION['page']){echo "active";} ?>" href="<?php echo $row['pageUrl'] ?>"><?php echo $row['pageTitle'];?></a>
<?php } ?>
<br>

1.将数据写入$_SESSION['page']不是一个好主意

相关问题