Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > динамическое меню...


Автор: Entwickler 21.10.2007, 21:47
очень просто по идее должно было бы работать, но неработает!!!!!!!!! smile 
короче типа "динамическое" меню. При нажатии на Kategorie1 должны "выподать "подменюшки" типа Thema 1  и так далее...
Код

<html>
    <head>
        <title>Atomic- Navigation</title>
        <link rel="stylesheet" type="text/css" href="css/main.css" />
    </head>
    <body>
        <font face="Verdana" class="navigation" >
            <br /><?php
                $kategorien = array(
                'Kategorie1' => 'navigation.php?sub=1',
                'Kategorie2' => 'navigation.php?sub=2',
                'Kategorie3' => 'navigation.php?sub=3'
                );

                $themen_1 = array(
                'Thema1' => 'http://www.selfas.de',
                'Thema2' => 'http://www.flashstar.de',
                'Thema3' => 'http://www.atomicscript.de'
                );

                $themen_2 = array(
                'Thema1' => 'http://www.php.net',
                'UnterKategorie' => 'navigation.php?sub=2&unter=1',
                'Thema3' => 'http://www.mysql.org'
                );

                $themen_ebene_2 = array(
                'Unter_Thema_1' => 'http://www.flashhangel.de',
                'Unter_Thema_2' => 'http://www.flashpower.de',
                'Unter_Thema_3' => 'http://www.cybercollege.de'
                );

                $themen_3 = array(
                'Thema1' => 'http://www.madania.de/',
                'Thema2' => 'http://www.tutorials.de',
                'Thema3' => 'http://www.apachefriends.org'
                );

                foreach($kategorien as $key => $wert){
                    echo "<a href='$wert'>$key</a><br/>";
                    if(($key == "Kategorie1")&&($sub == "1")){
                        foreach($themen_1 as $key => $wert){
                            echo "<ul><a href='$wert'>$key</a></ul>";
                        }
                    }
                    if(($key == "Kategorie2")&&($sub == "2")){
                        foreach($themen_2 as $key => $wert){
                            echo "<ul><a href='$wert'>$wert</a></ul>";
                            if(($key == "UnterKategorie")&&($sub == "2")&&($unter == "1")){
                                foreach($thenem_eben_2 as $key => $wert){
                                    echo "<ul><a href='$wert'>$key</a></ul>";
                                    if($key == "Unter_Thema_3"){ $b = "2"; }
                                }
                            }
                        }
                    }
                    if(($key == "Kategorie3")&& ($sub == "3")){
                        foreach($themen_3 as $key => $wert){
                            echo "<ul><a href='$wert'>$key</a></ul>";
                        }
                    }
                }
            ?>
        </font>
    </body>
</html>

это полный код... чего то там не того...

Автор: astra0 21.10.2007, 22:33
 переменную  $sub не инициализировал, она же в массиве так и осталась

Автор: Entwickler 22.10.2007, 11:47
есть идеи как ? smile 

Автор: Guedda 22.10.2007, 12:19
Код

<html>
    <head>
        <title>Atomic- Navigation</title>
        <link rel="stylesheet" type="text/css" href="css/main.css" />
    </head>
    <body>
        <font face="Verdana" class="navigation" >
            <br /><?php
                $sub = ""; // инициализация вот!!!
                $kategorien = array(
// ...

Автор: Entwickler 22.10.2007, 13:10
всё равно не пашет!!! smile 

Автор: SelenIT 22.10.2007, 13:14
Entwickler, чтоб "пахало", для начала неплохо бы выучить HTML. Потом сделать на голом HTML шаблон того, что должно получиться (в каждом случае). А потом только воспроизводить этот HTML динамически средствами PHP.

А текущий вариант скрипта, простите, реализует антипаттерн "мусор на входе - мусор на выходе"...

Автор: Entwickler 22.10.2007, 13:25
а... я всё понял...надо сделать так:
Код

$sub = $_GET['sub'];

и тогда... ура!!! smile .Всем ОГРОМНОЕ спасибо, особенно господину SelenIT... smile шутка...

Добавлено через 1 минуту и 3 секунды
эта вешь не претендует на лучший скрипт по навигации по сайту, просто учусь работат с массивами...

Автор: SelenIT 22.10.2007, 14:15
Цитата(Entwickler @  22.10.2007,  13:25 Найти цитируемый пост)
просто учусь работат с массивами...

Массивы в PHP - штука мощная...
Код

        $kategorien = array(
                 'Kategorie1' => array('navigation.php?sub=1', '1'), // array(0=>ссылка, 1=>id_подменю)
                 'Kategorie2' => array('navigation.php?sub=2', '2'),
                 'Kategorie3' => array('navigation.php?sub=3', '3')
         );
         $themen = array(
            '1' => array(
                     'Thema1' => array('http://www.selfas.de', ''),
                     'Thema2' => array('http://www.flashstar.de', ''),
                     'Thema3' => array('http://www.atomicscript.de', '')
                 ),
                 '2' => array(
                     'Thema1' => array('http://www.php.net', ''),
                     'UnterKategorie' => array('navigation.php?sub=2&unter=1', '1'),
                     'Thema3' => array('http://www.mysql.org', '')
                 ),
                 '3' => array(
                     'Thema1' => array('http://www.madania.de/', ''),
                     'Thema2' => array('http://www.tutorials.de', ''),
                     'Thema3' => array('http://www.apachefriends.org', '')
                 )
        );
        $themen_ebene = array(
            '1' => array(
                     'Unter_Thema_1' => 'http://www.flashhangel.de', // не массив, т.к. выше уровня нет
                     'Unter_Thema_2' => 'http://www.flashpower.de',
                     'Unter_Thema_3' => 'http://www.cybercollege.de'
            )
         );

                foreach($kategorien as $key => $wert){
                    echo "<a href='$wert[0]'>$key</a><br/>";
                    if(isset($_GET['sub']) && $_GET['sub'] === $wert[1]){
                    echo "\n<ul>\n";
                        foreach($themen[$wert[1]] as $key1 => $wert1){
                            echo "<li><a href='$wert1[0]'>$key1</a>";
                            if(isset($_GET['unter']) && $_GET['unter'] === $wert1[1]){
                                echo "\n<ul>\n";
                                foreach($themen_ebene[$wert1[1]] as $key2 => $wert2){
                                     echo "<li><a href='$wert2'>$key2</a></li>\n";
                                }
                                echo "</ul>\n";
                            }
                            echo "</li>\n";
                        }
                        echo "</ul>\n";
                    }
                }


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)