使用php导航栏更新内容,否则就是语句

时间:2014-04-04 22:32:30

标签: php html css

主页加载时出现一个错误,

  

注意:第5行的/Applications/XAMPP/xamppfiles/htdocs/lpnew/index.php中的未定义索引:CONTACT

所有链接都不会保持活动状态,也不会切换内容。

索引页:

<?php $pg = 'index'; ?>
<?php include('includes/header.php'); ?>
<?php 
    $pg = $_GET[$pg];
    if ($pg == "services") {
        include("services.php");
    } elseif($pg == "employees") {
        include("employees.php");
    } elseif($pg == "contact") {
        include("contact.php");
    } else {
        include("home.php");
    };
?>
<?php include('includes/footer.php'); ?>

header.php中的导航栏:

<?php
$pages = array(
    "index" => "HOME", 
    "services" => "SERVICES", 
    "employees" => "EMPLOYEES", 
    "contact" => "CONTACT"
); 
$pg = (isset($_GET['pg'])) ? $_GET['pg'] : "";
foreach ($pages as $url => $pg) {
    echo '<li ';
    if ($pg == $url) {
        echo '<li><a class=active href="index.php?p='
        . htmlspecialchars(urlencode($url)). '">' 
        . htmlspecialchars($pg) . '</a></li>';
    } else {
        echo '<li><a href="index.php?p=' . $url . '">' . $pg . '</a></li>';
    }
}
?>

2 个答案:

答案 0 :(得分:1)

这是你的问题:

$pg = (isset($_GET['pg'])) ? $_GET['pg'] : "";
foreach ($pages as $url => $pg) {

您正在重新定义$ pg,以便它解析为$ pages的最后一个索引。 这一行试图阅读未定义的$_GET['CONTACT']

$pg = $_GET[$pg];
if ($pg == "services") {
    include("services.php");
} elseif($pg == "employees") {
    include("employees.php");
} elseif($pg == "contact") {
    include("contact.php");
} else {
    include("home.php");
};

正如sverri已经指出的那样,你所要做的就是改变循环的值部分:

foreach ($pages as $url => $val) {
    echo '<li ';
    if ($val == $url) {
        echo '<li><a class=active href="index.php?p='
        . htmlspecialchars(urlencode($url)). '">' 
        . htmlspecialchars($val) . '</a></li>';
    } else {
        echo '<li><a href="index.php?p=' . $url . '">' . $val . '</a></li>';
    }
}

答案 1 :(得分:1)

这是因为这一行:

<?php include('includes/header.php'); ?>

在其中,您使用$pages作为保存值的变量遍历$pg数组:

foreach ($pages as $url => $pg) {
    // ...
}

这将覆盖索引文件中定义的$pg的原始值,并使用数组的最后一个值(在本例中为'CONTACT')。

要解决此问题,您只需更改循环中变量的名称,如下所示:

foreach ($pages as $url => $someOtherName) {
    // ...
}