Обновление контента с помощью php nav bar и других операторов

0

Загрузка главной страницы с одной ошибкой,

Примечание. Неопределенный индекс: CONTACT в /Applications/XAMPP/xamppfiles/htdocs/lpnew/index.php в строке 5

Ни одна из ссылок не активна и не переключает контент.

Главная страница:

<?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 ответа

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");
};

Как уже отмечал Сверри, все, что вам нужно сделать, это изменить часть значения вашего цикла:

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

Именно из-за этой строки:

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

В нем вы перебираете массив $pages используя $pg в качестве переменной, которая содержит значение:

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

Это переопределяет исходное значение $pg, как определено в вашем индексном файле, с последним значением массива (в данном случае 'CONTACT').

Чтобы исправить это, вы можете просто изменить имя переменной в цикле, например:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню