使用 URL 参数 PHP 构建和导航动态菜单使用 PHP 进行 Web 编程 - 课程作业 2 - 任务 1

问题描述 投票:0回答:1
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Web Programming using PHP - Coursework 2 - Task 1</title>
</head>
<body>
    <header>   
        <h1>Web Programming using PHP - Coursework 2 - Task 1</h1>
    </header>
    <main>
        <?php
         $navLists = ['main'=>['home'=>'Home Page','study'=>'Study','research'=>'Research','sem'=>'Seminars'],
         'study'=>['ug'=>'Undergraduate', 'pg'=>'Post Graduate', 'res'=>'Research Degrees'],
         'research'=>['rStaff'=>'Staff','rProj'=>'Research Projects','rStu'=>'Research Students'],
         'sem'=>['current'=>'Current Year','prev'=>'Previous Years'],
         'ug'=>['cs'=>'Computer Science','ds'=>'Data Science'],
         'pg'=>['swe'=>'Software Engineering','cf'=>'Computer Forensics']
         ];

        // Function to generate navigation menu
        function generateNavMenu($menu, $navType, $activeItem = null) {
            echo '<nav>';
            foreach ($menu as $key => $value) {
                $url = $_SERVER['PHP_SELF'] . '?activeNAV=' . $navType . '&contentSelected=' . $key;
                echo '<a href="' . $url . '">' . $value . '</a> ';
            }
            echo '</nav>';
        }

        // Display main navigation menu
        generateNavMenu($navLists['main'], 'main');

        // Check if a menu item is selected
        $activeNAV = isset($_GET['activeNAV']) ? $_GET['activeNAV'] : 'main';
        $contentSelected = isset($_GET['contentSelected']) ? $_GET['contentSelected'] : null;

        // Display all submenus if necessary
        if ($activeNAV !== 'main') {
            generateNavMenu($navLists[$activeNAV], $activeNAV);
        }
        if ($contentSelected && isset($navLists[$contentSelected])) {
            generateNavMenu($navLists[$contentSelected], $contentSelected);
        }

        // Display the text of the selected item
        if ($contentSelected) {
            foreach ($navLists as $menu) {
                if (isset($menu[$contentSelected])) {
                    echo '<p>Selected: ' . $menu[$contentSelected] . '</p>';
                    break;
                }
            }
        }
        ?>
    </main> 
</body>
</html>

这是我的代码,我的中间菜单有问题 我想要显示所有菜单,但我多次遇到问题 当我从上一个菜单(|软件工程|计算机取证|)中选择任何项目时,我的中间菜单(|本科|研究生|研究学位|)消失

希望我的问题能得到解决

php url multidimensional-array parameter-passing
1个回答
0
投票

首先,让我提请您注意,

$activeItem
generateNavMenu()
参数从未使用过——这表明需要重新思考和进行一些编辑。

其次,当选择

pg
选项时,假设是
Computer Forensics
,那么
$_GET['activeNAV']
将是
pg
$_GET['contentSelected']
将是
cf
。 因此,
isset($navLists[$contentSelected])
不会计算为
true
,因为
$navLists
数组没有名为
cf
的第一级键。

第三,我认为我不喜欢将层次结构实现为堆叠的两级数组的决定。正如您所知,一旦达到第三级深度,您就会失去祖先数据的踪迹。 也许重构您的函数以接收动态数量的键是明智的;那么函数本身只能被调用一次,并且可能会打印多个菜单。

© www.soinside.com 2019 - 2024. All rights reserved.