navigation mit php

stef@n

Mitglied
Hoi zusammen,

also gleich mal vorne weg , ich hab die suche ausgiebig genuzt, auch google habe ich befragt,(viellicht habe ich auch nur nach den falschen begriffen gesucht) finde aber keine zufriedenstellende lösung. Ich habe ca 20 (js)scripte getestet, jetzt nach 2 tagen, frage ich euch um hilfe.
ich habe die frage auch im js forum schon gestellt, in php hätte das allerdings den vorteil, dass ich keine browserprobleme habe. ist das überhaupt möglich und wenn ja auch zu raten?

Ich suche ein gaaaaaaanaz einfaches Menue, in dieser Struktur:

hauptgruppe1
-punkt a
-punkt b
-punkt c
hauptgruppe2
-punkt a
-punkt b
-punkt c
-punkt d
hauptgruppe3
-punkt a
-punkt b
...usw

ich habe 17 hauptgruppen und muß in diese 81(!!) untergruppen unterteilen (eine art katalog), aus diesem Grund sollten eben imer nur die Hauptgruppen angezeigt werden,
die Untergruppen jedoch nur bei einem Klick erscheinen, aus Platzgründen.
Ich will keine Animation, keinen Schnickschnack nur gaaaaanz einfaches pures, schnelles aufklappen in reinem text.(möglichst eine die auf vielen browsern funzt, ich weiß nichtmal ob js dafür gut ist?!)nur eine "Bedinung" soll es haben, es soll sich eine geöffnete Hauptgruppe schließen, wenn ich auf eine Andere klicke.



vielen dank für euere hilfe
 
Hi,

also es gibt mehrere Möglichkeiten.

z.B. :

Javascript
siehe JS-Menu

oder auf PHP Basis.
Hier wird es "etwas" komplizierter. Ich glaube hier gab es schon mal etwas ähnliches.
Such mal nach "Rekursiver Programmierung" oder Vater-Kind Struktur
oder Tree-View.
Um Rekursion wirst du bei PHP nicht drum herumkommen.

Tex
 
fast perfekte navi für mich

Hoi,
also das php script ist schon echt geil, dankeschön.
ich kann zwar "bissi" php aber das da unten, naja, soweit bin ich noch nicht ganz *fg*. ist es möglich, es so umzugestalten, dass es sich durch einen klick auf einen anderen hauptmenuepunkt auch wieder schließt? ich check zwar ungefähr wie des funzt, aber wie man des umcodet leider nich.
jemand nen tip?

dankeschön Stef@n



hier der code:

PHP:
<?php 

class menu { 
    var $name; 
    var $items; 
    var $open; 
    var $closed; 
    var $indent; 

    function menu($name, 
                  $open = '(-)', 
                  $closed = '(+)', 
                  $indent = '&nbsp; &nbsp; ' 
                 ) 
    { 
        $this->items  = array(); 
        $this->name   = $name; 
        $this->open   = $open; 
        $this->closed = $closed; 
        $this->indent = $indent; 
    } 

    function add($name, $href = "", $target = "") { 
        $n = count($this->items); 

        if (is_object($name)) { 
            $this->items[$n] = $name; 
        } else { 
            $this->items[$n]['name'] = $name; 
            $this->items[$n]['href'] = $href; 
            $this->items[$n]['target'] = $target; 
        } 
    } 

    function show($nest = 0) { 
        $urlname = strtr($this->name, ' ', '_'); 
        $indent = ''; 
        global $$urlname; 
        global $PHP_SELF; 
        global $QUERY_STRING; 

        if ($nest) { 
            $indent = str_repeat($this->indent, $nest); 
        } 

        if (isset($$urlname)) { 
            printf('%s<a href="%s?%s">%s</a><br>', 
                   $indent . $this->open, 
                   $PHP_SELF, 
                   ereg_replace("{$urlname}=&", '', $QUERY_STRING), 
                   $this->name); 
            echo "\n"; 

            while (list(,$item) = each($this->items)) { 
                if (is_object($item)) { 
                    $item->show($nest + 1); 
                } else { 
                    printf('%s<a href="%s"%s>%s</a><br>', 
                           $indent . $this->indent, 
                           $item['href'], 
                           (!empty($item['target']) ? ' target="' . 
                                                      $item['target'] . '"' 
                                                    : ''), 
                           $item['name']); 
                    echo "\n"; 
                } 
            } 
        } else { 
            printf('%s<a href="%s?%s=&%s">%s</a><br>', 
                   $indent . $this->closed, 
                   $PHP_SELF, 
                   $urlname, $QUERY_STRING, 
                   $this->name); 
            echo "\n"; 
        } 
    } 
} 

?>
und die anzeige dazu:
PHP:
<?php 
include('menu.php'); 

$submenu = new menu('Sub Menu'); 
$submenu->add('Sub Item 1', 'link.html', '_new'); 
$submenu->add('Sub Item 2', 'link.html'); 

$main = new menu('Main'); 
$main->add('Main Item 1', 'link.html'); 
$main->add('Main Item 2', 'link.html'); 
$main->add($submenu); 
$main->add('Main Item 3', 'link.html'); 

$second = new menu('Secondary Menu'); 
$second->add('Secondary Item 1', 'link.html'); 
$second->add('Secondary Item 2', 'link.html'); 

$main->show(); 
$second->show(); 

?>
 
Zurück